更新的行我有一個問題,我的更新觸發SQL - 刪除更新觸發
ALTER TRIGGER tr_MyTable
ON MyTable
AFTER UPDATE
AS
BEGIN TRAN
SET NOCOUNT ON;
If Update(column)
Begin
DELETE FROM MyTable WHERE <condition>
End
SET NOCOUNT OFF
COMMIT TRAN
GO
我試圖刪除行(從MayTable),目前已在updatete的MyTable。但是當我運行觸發器時該行不會被刪除。是否無法刪除當前在更新觸發器內更新的行? (刪除和更新在同一張桌子上)
謝謝!
編輯:
ALTER TRIGGER tr_MyTable
ON MyTable
AFTER UPDATE
AS
BEGIN TRAN
SET NOCOUNT ON;
SELECT @ID = ID
FROM inserted
If Update(column)
Begin
DELETE FROM MyTable WHERE ID = @ID
End
SET NOCOUNT OFF
COMMIT TRAN
GO
編輯2:
ALTER PROCEDURE sp_Update
(
@ID INTEGER,)
AS
SET NOCOUNT ON
Begin Tran
Update MyTable SET Column = Data where ID = @ID
Commit Tran
SET NOCOUNT OFF
GO
此更新prosedure工作和列被更新。觸發器也被觸發,並且行刪除(print語句)被執行,但不是刪除語句。 但是,當我直接在表中更新列時,沒有形成觸發器,觸發器觸發,刪除語句正常工作。我不使用回滾。
您已經在SQl服務器上做出了最糟糕的觸發錯誤,該錯誤是假設只有一條記錄將被插入或刪除表。如果你進行批量插入,這將不起作用。此代碼是錯誤的,必須更改。 – HLGEM 2012-04-02 21:28:00
此外,您應該不要使用sp_開始存儲過程,因爲這是系統過程使用的過程。你也不應該寫一個沒有try-catch塊的事務,這樣它可以被回滾。 – HLGEM 2012-04-02 21:29:25