为什么我的sp在交易中陷入僵局?

时间:2015-01-22 15:22:03

标签: tsql deadlock

这就是sp的作用:

SET TRANSACTION ISOLATION LEVEL Serializable
begin transaction 
IF EXISTS( SELECT 1 FROM dbo.Portfolio WHERE RawMessageID = @RawMessageID)
begin
----do some cleaning job like delete the portfolio, or something
end

insert into Portfolio
select @a,@b,@c,@d

commit

随机地,我看到发生了死锁,这个死锁图显示了细节。

因此,必须是一个调用实例保持select语句的共享锁并要求空资源锁。另一个实例保存空资源锁并请求共享锁。

我猜对了吗?我试图写一个简化版本来演示这个,但永远不会触发这个死锁。

有人可以帮忙吗? enter image description here

0 个答案:

没有答案