【发布时间】:2009-02-05 14:28:48
【问题描述】:
如何在 T-SQL 2005 中删除之前触发触发器? FOR 实际上在事件之后触发,并且它们似乎在 TRIGGER 函数中没有 BEFORE 参数。 INSTEAD OF 不是我想要的。 我需要在删除记录之前触发。 有什么想法吗?
【问题讨论】:
-
谢谢汤姆、米奇和史蒂文
标签: sql sql-server-2005 tsql
如何在 T-SQL 2005 中删除之前触发触发器? FOR 实际上在事件之后触发,并且它们似乎在 TRIGGER 函数中没有 BEFORE 参数。 INSTEAD OF 不是我想要的。 我需要在删除记录之前触发。 有什么想法吗?
【问题讨论】:
标签: sql sql-server-2005 tsql
您可以使用 INSTEAD OF 选项,只需显式删除末尾的行。例如:
CREATE TRIGGER dbo.My_Table_Delete_Instead_Of_Trigger
ON dbo.My_Table
INSTEAD OF DELETE
AS
BEGIN
-- Do some stuff here
DELETE T
FROM DELETED D
INNER JOIN dbo.My_Table T ON T.PK_1 = D.PK_1 AND T.PK_2 = D.PK_2
END
假设主键由列 PK_1 和 PK_2 组成。
【讨论】:
你不能。但是您可以在 AFTER DELETE 触发器中执行回滚。
【讨论】:
你不能。您可以做的是检查 DELETE 表并在需要时撤消删除。
这是事件的顺序:
【讨论】: