我所著此觸發器:EXECUTE後的事務計數表示不匹配的BEGIN和COMMIT語句數。先前計= 1,當前計數= 2
ALTER TRIGGER [dbo].[trg_abort_insert]
ON [dbo].[F_DOCCURRENTPIECE]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
BEGIN TRY
BEGIN TRAN
IF EXISTS (SELECT *
FROM Inserted i
INNER JOIN Deleted d ON i.CBMARQ= d.CBMARQ
WHERE i.DC_Piece <> d.DC_Piece
AND i.DC_Domaine = 0
AND i.DC_IdCol = 6)
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE()
IF @@TRANCOUNT>0
ROLLBACK
END CATCH;
END
我'具有這樣的錯誤: 事務計數EXECUTE後指示開始和提交語句的不匹配數。上一個計數= 1,當前計數= 2
Pleaze幫我
問題是因爲你有一個事務觸發器。這導致無盡的悲傷。我99.9999%確定你的調用代碼在交易中是正確的?從您的觸發器中移除交易。 –
好吧,當我刪除開始交易和提交交易,然後觸發就像不認識趕上。開始反式和提交是必不可少的,因爲代碼不會只用try catch執行,當我刪除ty catch時,我有這個錯誤:事務在觸發器中結束。該批次已被中止。 – hollyx
事務的存在不影響語句流或阻止try/catch的工作。你真的想在這裏做什麼?觸發器中的事務不起作用,因爲在任何dml語句中都已經存在隱式觸發器。如果你能解釋你的要求,我們可以幫你解決這個問題。 –