Mysql存储过程的执行顺序问题
SQL code:
CREATE TABLE `t_a` (
`a_id` int(11) NOT NULL AUTO_INCREMENT,
`a_name` varchar(30) NOT NULL DEFAULT 'N/A',
PRIMARY KEY (`a_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `t_b` (
`b_id` int(11) NOT NULL AUTO_INCREMENT,
`b_name` varchar(30) NOT NULL DEFAULT 'N/A',
`a_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`b_id`),
KEY `a_id` (`a_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
create procedure sp_insert_b
(
p_aname varchar(30),
p_bname varchar(30)
)
begin
declare v_id int;
insert into t_a(a_name)values(p_aname);
select a_id into @v_id from t_a order by a limit 1;
set v_id=@v_id;
insert into t_b(b_name,a_id) values(p_bname,v_id);
end
上面的存储过程执行时,会不会存在这样一种风险:有多个客户端同时调用存储过程,存储过程在执行select a_id into @v_id from t_a order by a limit 1;这句时,获取的id会不会错位?也就是说多个客户端调用同一个Server的同一个存储程序,存储程序是并行执行还是顺序执行?我理解的并行执行就是多个程序同时执行,顺序执行就是一个client端完了再执行另一个client端的,谢谢!MySQL 不保证你并发进程的访问顺序!
如果你想取刚INSERT的a_id,最好用LAST_INSERT_ID()
insert into t_a(a_name)values(p_aname);
select LAST_INSERT_ID() into @v_id ;
LAST_INSERT_ID()是个function,我怎么知道这个LAST_INSERT_ID()是t_a的而不是t_b的呢?
如何定位这个
相关问答:
大家帮我看下吧,本来数据库没有东西,能显示没有东西的信息,但是我添加了一条内容后,字没了,但是图片也无法显示,红叉叉也没有,怎么回事啊?
PHP code:
$str="select * from product wh ......
我在清理mysql的时候,一不留神将mysql(即data里的mysql文件夹)数据库给删掉了,隔了几个小时我重启了mysql软件,mysql就自动初始化了数据库,导致从删除mysql文件夹开始到重启这段时间的数据丢失,那位高手帮想想办 ......
我已经按照教程上配置tomcat的server.xml
CREATE DATABASE ADDRESSLIST;
USE ADDRESSLIST;
DROP TABLE IF EXISTS FRIEND;
CREATE TABLE FRIEND
(FRIEND_ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY ,
FRIEND_NAME VARCHAR(20) NOT N ......
如题。我已经安装了mysqlodbc驱动。
adodc控件属性里面,连接资源,
有
使用DataLink文件
使用ODBC数据资源名称
使用连接字符串
是选择哪个?
然后得步骤是怎么样的?
HTML code:
http://www.connectionst ......