繁体   English   中英

SQL Server过程事务

[英]SQL server procedure transaction

我正在同时执行以下存储过程

 i am executing the below stored procedure concurrently create procedure test @a AS if(@a=0) begin delete from tab1 insert into tab1 select * from tab2 end else begin delete from tab1 where id=@a insert into tab1 select * from tab2 where id=@a end 

在上面的tab2 id中,主键表tab1没有重复的记录。 当我在不同的会话中同时执行上述sp时,exec test 0 exec test 1我得到重复的错误。 它执行如下

Delete(test 0) delete(test 1)   insert(test 1) Insert  (test 0)                     

我想执行它

Delete(test 0) insert(test 0)   delete(test 1) Insert  (test 1)          

要么

Delete(test 1) insert(test 1)   delete(test 0) Insert  (test 0)             

您需要在delete + insert周围添加一个事务(开始tran,提交tran)。 那应该解决问题。 对于更复杂的事情,您可能需要调整隔离级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM