DML 觸發器
DML 觸發器作為對 dml 語句(insert
,update
或 delete
)的響應而觸發。
可以建立 dml 觸發器來處理單個表或檢視的一個或多個 dml 事件。這意味著單個 dml 觸發器可以處理從特定表或檢視中插入,更新和刪除記錄,但是隻能處理在該單個表或檢視上更改的資料。
DML 觸發器提供對 inserted
和 deleted
表的訪問,這些表儲存有關觸發觸發器的 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 新增記錄。