如何在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. 如何在刪除觸發器之前拒絕刪除語句?
- 4. SQL Server 2005 - 刪除表觸發器?
- 5. 調用在刪除之前觸發
- 6. 而不是刪除之前的觸發
- 7. 在刪除觸發器之前刪除相關記錄postgresql
- 8. 之前刪除觸發性能低下
- 9. 刪除觸發器
- 10. 如何在SQL Server 2005中更新觸發器之前創建
- 11. 如何在更新觸發之前更改插入觸發器之前?
- 12. 如何在回發之前觸發SelectedIndexChange?
- 13. 創建刪除前觸發器?
- 14. Sql 2005觸發器
- 15. 刪除後刪除觸發器只會觸發嗎?
- 16. Oracle之前INSERT觸發器
- 17. 如何觸發軟刪除?
- 18. 如何刪除壞觸發
- 19. 觸發器在SQL Server 2005
- 20. 在使用transact-SQL刪除觸發器之前
- 21. 如何改變之前,DDL觸發器
- 22. 除了觸發其他觸發器外,如何觸發onload?
- 23. 創建刪除觸發器
- 24. 無法刪除觸發器
- 25. 在刪除觸發器刪除另一個表中的條目之前
- 26. Inotify在刪除之前還是之後觸發IN_DELETE?
- 27. oracle觸發刪除
- 28. 發送TCP消息/刪除觸發器
- 29. MySQL之前刪除觸發器雙連接和條件
- 30. MySQL觸發器在更改或刪除時觸發
謝謝Tom,Mitch和Steven – Fet 2009-02-06 08:47:53