如何在T-SQL 2005的删除之前触发触发器? FOR事实上会在事件后触发,而且在TRIGGER函数中它们看起来没有BEFORE参数。 INSTEAD OF不是我想要的。 我需要在删除记录之前启动。 任何想法?如何在T-SQL 2005的删除之前触发触发器?
18
A
回答
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组成。
5
你不能。但是您可以在AFTER DELETE触发器中执行回滚。
0
你不能。你可以做的是检查DELETE表并撤消删除,如果你需要的话。
这里是事件的顺序:
- 发送DELETE命令到SQL Server
- 项目从表
- OnDelete触发器触发如果逻辑未能执行您的
- 逻辑删除/通行证/什么,撤销删除
+0
这对于“删除之前”触发器最常见的用例没有帮助 - 级联删除 - 这让我对你在删除操作中会做什么感到困惑。 – 2013-05-28 06:39:22
+1
我通常使用OnDelete触发器创建一个元素在给定时间被用户删除的历史记录条目。 – 2013-05-28 14:53:35
相关问题
- 1. 删除触发器SQL 2005
- 2. 触发器在删除记录之前
- 3. 删除SQL上的触发器之前。
- 4. 如何在删除触发器之前拒绝删除语句?
- 5. 触发SQL Server 2005之前
- 6. SQL Server 2005 - 删除表触发器?
- 7. 触发器TSQL
- 8. 调用在删除之前触发
- 9. 而不是删除之前的触发
- 10. 之前删除触发性能低下
- 11. 删除触发器
- 12. 如何在SQL Server 2005中更新触发器之前创建
- 13. 火鸟触发前删除
- 14. SQL Server 2005 - 触发器没有触发
- 15. 如何在更新触发之前更改插入触发器之前?
- 16. Sql 2005触发器
- 17. NSTimer在触发之前触发
- 18. 如何在回发之前触发SelectedIndexChange?
- 19. 创建删除前触发器?
- 20. 删除后删除触发器只会触发吗?
- 21. 触发器在SQL Server 2005
- 22. Oracle之前INSERT触发器
- 23. 如何触发软删除?
- 24. 如何删除坏触发
- 25. 删除SQL触发器
- 26. 如何改变之前,DDL触发器
- 27. 除了触发其他触发器外,如何触发onload?
- 28. sqlite在删除插入触发器之前
- 29. 在使用transact-SQL删除触发器之前
- 30. 我怎么能写之前删除触发器在SQL Server
谢谢Tom,Mitch和Steven – Fet 2009-02-06 08:47:53