如何在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