我有一个运行一系列插入的存储过程,但在某些情况下,其中一个插入似乎没有运行,但它后面的其余代码运行良好。
DECLARE @ID1 int
DECLARE @ID2 int
-- This works
INSERT INTO table1 (field1,field2)
VALUES('test', 1)
SELECT @ID1 = SCOPE_IDENTITY() -- This picks up the correct ID
-- This sometimes doesn't seem to run or an error of some sort happens infrequently
INSERT INTO table2 (field1, field2, field3, field4, field5)
VALUES(1,2,3,4,@ID1)
-- This always runs, but if the previous insert doesn't run inserts the previous ID into @ID2
SELECT @ID2 = SCOPE_IDENTITY()
-- Inserts the ID from the previous step and therefore is sometimes wrong
INSERT INTO table3 (field1,field2)
VALUES ('testing', @ID2)
这是一个经过编辑的 SP 样本。为什么有时会发生这种情况?我会想如果INSERT
剩下的程序有问题会爆炸吗?但相同的代码大部分时间都由同一个人运行。我检查了在问题发生的同时是否有任何表锁定,但似乎没有任何我可以发现的东西。
找出问题所在的最佳方法是什么?或者我应该如何重组上述代码以消除可能的影响?