触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
table|view 是table或view的名称;
for默认为after 是指在触发器的所有SQL语句都成功执行后才激发。
INSERT|UPDATE|DELETE 是指当插入或更新或删除后激活触发器。可以选定多个选项。
NOT FOR REPLICATION 是指触发器不会在备份的时候执行。
AS后面就是触发器要执行的操作。
IF UPDATE(attribute)是指在指定的attribute进行插入或删除后执行后面的SQL语句。
触发器中有两张临时表,程序员可以使用:
1.INSERTED 表
2.DELETED 表
当插入 INSERTED表存放新增记录,DELETED表不存放
当更新 INSERTED表存放更新的新纪录,DELETED表存放更新前记录
当删除 INSERTED表不存放记录,DELETED表存放被删除的记录