我有一个简单的SQL存储过程用于更新表,有时我遇到阻止更新的死锁。 我可以在存储过程中使用什么来捕获此死锁,然后再次重试更新?
答案 0 :(得分:1)
您应该在应用程序中创建一个错误处理程序来处理这个问题。确保在重新提交查询之前给它一些时间。
答案 1 :(得分:0)
你可以尝试/抓住它
http://technet.microsoft.com/en-us/library/aa175791%28v=sql.80%29.aspx
DECLARE @Tries tinyint
SET @Tries = 1
WHILE @Tries <= 3
BEGIN
BEGIN TRANSACTION
BEGIN TRY
INSERT Authors VALUES
(@au_id, @au_lname, '', '', '', '', '',
'11111', 0)
WAITFOR DELAY '00:00:05'
SELECT * FROM authors WHERE au_lname LIKE 'Test%'
COMMIT
BREAK
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber
ROLLBACK
SET @Tries = @Tries + 1
CONTINUE
END CATCH;
END