DML 觸發器

DML 觸發器作為對 dml 語句(insertupdatedelete)的響應而觸發。
可以建立 dml 觸發器來處理單個表或檢視的一個或多個 dml 事件。這意味著單個 dml 觸發器可以處理從特定表或檢視中插入,更新和刪除記錄,但是隻能處理在該單個表或檢視上更改的資料。

DML 觸發器提供對 inserteddeleted 表的訪問,這些表儲存有關觸發觸發器的 insert,update 或 delete 語句影響的資料的資訊。

請注意,DML 觸發器是基於語句的,而不是基於行的。這意味著如果語句影響多於一行,則插入或刪除的表將包含多於一行。

例子:

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR INSERT
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Inserted'
    FROM Inserted

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR UPDATE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Updated'
    FROM Inserted 

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR DELETE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Deleted'
    FROM Deleted

GO

只要在 tblSomething 中新增,刪除或更新記錄,上面的所有示例都會向 tblAudit 新增記錄。