Introduction
簡單介紹 Trigger 的撰寫
Conetent
觸發程序可以設定在 table 異動或是欄位資料異動,而當 table 資料異動的時候,可能有新增、刪除、修改等情況,在 SQLServer 中,異動的時候會產生暫存的 inserted 和 deleted 兩個 table ,兩個 table 格式資訊皆與原 table 相同;
- inserted table 紀錄新增資料、修改後資料
- deleted table 紀錄刪除資料、修改前資料
以下範例展示該資料表異動的時候新增、修改或刪除的判斷。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
CREATE TRIGGER [dbo].[trigger_name] ON [dbo].[yourTable]
FOR INSERT,UPDATE,DELETE AS BEGIN
SET NOCOUNT ON;
IF (UPDATE([DataType]) and EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted) ) BEGIN PRINT '--- update 修改狀態 ---';
END
ELSE IF EXISTS (SELECT 1 FROM inserted) AND NOT EXISTS (SELECT 1 FROM deleted) BEGIN
PRINT '--- create 新增狀態 ---';
END
ELSE IF NOT EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted) BEGIN PRINT '--- delete 刪除狀態---'; END
END
|
Reference