0
當我調用存儲過程更新/插入到我的Configuration
表中時,我在C#代碼中收到死鎖異常。正在用於記錄歷史記錄的數據庫觸發器似乎導致了死鎖異常?
SP_Update_Configuration
存儲過程將插入新記錄或更新現有記錄。
觸發器設置爲保留歷史記錄表中以前記錄的歷史記錄。如果Configuration
表具有更新或插入,則它應該將該記錄添加到Configuration_History
表。
我認爲觸發器造成了死鎖?在添加觸發器之前,我沒有任何問題....任何想法?
我正在使用SQL Server 2012 Express。
這裏是我的SQL的一個例子:
CREATE PROCEDURE SP_Update_Configuration
(
--Input variables
)
AS
BEGIN TRANSACTION
DECLARE @RetCode INT
DECLARE @RowCnt INT
--Standard Update Logic
SELECT @RowCnt = @@ROWCOUNT
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @RetCode = 5
RETURN @RetCode
END
IF @RowCnt = 0
BEGIN
--Standard Insert Logic
END
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @RetCode = 5
RETURN @RetCode
END
COMMIT TRANSACTION
GO
create trigger dbo.Configuration_Log_Insert
on dbo.Configuration
for insert
as
set nocount on
insert into Configuration_History
select *
from Configuration
go
exec sp_settriggerorder @triggername = 'Configuration_Log_Insert', @order = 'last', @stmttype = 'insert'
create trigger dbo.Configuration_Log_Update
on dbo.Configuration
for update
as
set nocount on
insert into Configuration_History
select *
from Configuration
go
exec sp_settriggerorder @triggername = 'Configuration_Log_Update', @order = 'last', @stmttype = 'update'
我會做出這些改變和測試,如果我仍然收到了僵局例外。我不知道@@錯誤問題,我一直在使用這些存儲過程,並且正在更新/正確插入。我不確定這是否是一個問題。 – Mausimo
謝謝,這似乎彌補了例外。在我結束這個問題之前,我會進行更徹底的測試。乾杯! – Mausimo