alter trigger ttt_del
on ttt
for delete
as
begin
print ' 表 ttt删除了数据 '
end;
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
触发器是一种特殊类型的存储过程。当使用 DML 语句时, SQL Server 将自动执行这一特殊类型的存储过程。触发器和其他存储过程一样,可以包含简单的或者复杂的 SQL 语句。
触发器的特殊性体现在:
¨ 当对指定数据进行修改时,触发器自动执行,不需要按照名称手工执行。
¨ 使得触发器执行的操作称为触发事件。
¨ 触发器的 SQL 语句称为触发动作。
由于触发器自动执行的特性,有些时候会出现触发器的瀑布触发:在表 T1 上定义了触发器 S1 (这里有对表 T2 的 DML 操作), … ,在表 Tn 上定义了触发器 Sn 。对表 T1 的一个操作,会引起 T1 至 Tn 共 n 张表的操作。
SQL Server 把触发器分为 5 种类型:
¨ UPDATE :当修改表中数据时,这类触发器被激活。
¨ INSERT :当往表中插入数据时,这类触发器被激活。
¨ DELETE :当删除表中数据时,这类触发器被激活。
¨ INSTEAD OF :该类型的触发器代替触发器被激活,它总是在执行插入、修改和删除操作之前被执行。
¨ AFTER :该类型的触发器则是在触发动作完成之后被激活。
使用 SQL 语句管理触发器
使用 CREATE TRIGGER 语句能够建立触发器,其语法格式如下:
CREATE TRIGGER < 触发器名 >
ON { < 表名 > | < 视图名 >}
{ FOR | INSTEAD OF | AFTER}
{ [UPDATE] [,] [INSERT] [,] [DELETE]}
AS <SQL 语句块 >
其中:
¨ < 触发器名 > 是要新建的触发器名称。
¨ < 表名 > 或 < 视图名 > 是触发器所建立的数据库对象名称。
¨ <SQL 语句块 > 是定义触发动作的语句。
这是建立触发器语句的简洁版,详细语法要参考在线手册。