如何在T-SQL 2005中删除之前触发触发器?

时间:2009-02-05 14:28:49

标签: sql sql-server-2005 tsql

如何在T-SQL 2005中删除之前触发触发器? FOR实际上在事件发生后触发,它们似乎在TRIGGER函数中没有BEFORE参数。 INSTEAD OF不是我想要的。 我需要在删除记录之前触发。 有什么想法吗?

3 个答案:

答案 0 :(得分:28)

您可以使用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列组成。

答案 1 :(得分:5)

你做不到。但是您可以在AFTER DELETE触发器中执行回滚。

答案 2 :(得分:0)

你做不到。您可以做的是检查DELETE表并在需要时撤消删除。

以下是事件顺序:

  • 将DELETE命令发送到SQL Server
  • 项目已从表中删除
  • OnDelete触发器触发执行
  • 逻辑如果逻辑失败/通过/无论如何,撤消删除