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