抱歉,如果之前有人问过我的问题,或者它是否太明显,但我确实需要清除此问题。谢谢你的帮助。
在多用户界面中,如果来自不同用户的同一事务同时到达服务器,将会发生什么?
我有一张桌子:
create table table_x (
cod char(2) not null,
desc varchar(45) not null,
primary key (cod)
);
这些调用同时到达服务器的位置:
call sp_s('1','a');
call sp_s('1','b');
call sp_s('1','c');
sp_s(在param_a char(2)中,在param_b varchar(45)中)的作用是:
declare var_count tinyint default 0;
set var_count=
(select count(*)
from table_x
where cod=param_a);
if(var_count=0) then
insert into table_x values (param_a, param_b);
else
update table_x set desc=param_b
where cod=param_a;
end if;
如果注册表不存在,则将其插入,但是如果sp存在,则将其更新。
这是不使用自动增量的一种好方法吗?
如果我不使用auto_increment,最好的避免并发的方法是什么?
非常感谢你花时间陪伴。
最佳答案
这取决于事务隔离级别。但是,您可以在重复更新时使用插入到...,在鳕鱼上使用唯一索引。
关于mysql - mysql并发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6695848/