2014-10-02 68 views
-1

我有一個簡單的SQL存儲過程,我用它來更新表,有時我面臨阻止更新的死鎖。 我可以在存儲過程中使用什麼來捕獲此死鎖,然後再次重試更新?SQL存儲過程中的陷阱死鎖錯誤

+0

我建議處理,在您的應用程序發送更新。 – Andrew 2014-10-02 16:30:15

+0

*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......許多東西都是特定於供應商的 - 所以我們真的需要知道什麼**數據庫系統**(以及您正在使用的版本)(請相應更新標籤).... – 2014-10-02 16:30:47

回答

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

1

您應該在應用程序中創建一個錯誤處理程序來處理此問題。請確保在重新提交查詢之前給它一些時間。