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 添加记录。