这就是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语句的共享锁并要求空资源锁。另一个实例保存空资源锁并请求共享锁。
我猜对了吗?我试图写一个简化版本来演示这个,但永远不会触发这个死锁。
有人可以帮忙吗?