觸發器建立的代碼
Create Trigger TG_ProjectNameOn table1After Update AsUpdate table2Set [工程名]=b.工程名from table2 a,inserted bwhere a.ProjID = b.ID
關於觸發器中Inserted和Deleted的解釋。
inserted觸發器語句中使用了兩種特殊的表:deleted 表和 inserted 表。Microsoft® SQL Server 2000 自動創建和管理這些表。可以使用這兩個臨時的駐留內存的表測試某些數據修改的效果及設置觸發器操作的條件;然而,不能直接對表中的數據進行更改。
inserted 和 deleted 表主要用於觸發器中:
◆擴展表間引用完整性。
◆在以視圖為基礎的基表中插入或更新數據。
◆檢查錯誤並基於錯誤采取行動。
◆找到數據修改前後表狀態的差異,並基於此差異采取行動。
Deleted 表用於存儲 DELETE 和 UPDATE 語句所影響的行的復本。在執行 DELETE 或 UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中。Deleted 表和觸發器表通常沒有相同的行。
Inserted 表用於存儲 INSERT 和 UPDATE 語句所影響的行的副本。在一個插入或更新事務處理中,新建行被同時添加到 inserted 表和觸發器表中。Inserted 表中的行是觸發器表中新行的副本。
更新事務類似於在刪除之後執行插入;首先舊行被復制到 deleted 表中,然後新行被復制到觸發器表和 inserted 表中。
在設置觸發器條件時,應當為引發觸發器的操作恰當使用 inserted 和 deleted 表。雖然在測試 INSERT 時引用 deleted 表或在測試 DELETE 時引用 inserted 表不會引起任何錯誤,但是在這種情形下這些觸發器測試表中不會包含任何行。
說明
如果觸發器操作取決於一個數據修改所影響的行數,應該為多行數據修改(基於 SELECT 語句的 INSERT、DELETE 或 UPDATE)使用測試(如檢查 @@ROWCOUNT),然後采取相應的對策。
SQL Server 2000不允許AFTER 觸發器引用 inserted 和 deleted 表中的 text、ntext 或 image 列;然而,允許 INSTEAD OF 觸發器引用這些列。有關更多信息,請參見 CREATE TRIGGER。