DML( 数据操纵语言 Data Manipulation Language)触发器
一、创建触发器
create trigger (触发器名字)
on (表名)
for | after | instead of insert | update | delete
as
[if ......]
begin
[SQL 语句] [rollback transaction]
end
说明:
instead of 即用 as后的SQL语句操作 来 代替对表的DML操作; after即在对表的DML操作执行后 执行as后的SQL语句;for等于对表的DML操作执行as后的SQL语句。
特别注意 rollback transaction,即回滚事务,不执行相应DML操作,保持原来的状态。
二、更改触发器
alter trigger (触发器名字)
on (表名)
for | after | instead of insert | update | delete
as
[if ......]
begin
[SQL 语句] [rollback transaction]
end
三、删除触发器
drop trigger (触发器名字)
四、虚拟表inserted和deleted
对表的操作 | Inserted逻辑表 | Deleted逻辑表 |
增加记录(insert) | 存放增加的记录 | 无 |
删除记录(delete) | 无 | 存放被删除的记录 |
修改记录(update) | 存放更新后的记录 | 存放更新前的记录 |
触发器中可直接引用inserted和deleted,就当成是平常建立的表。
五、查看数据库中已存在的触发器
select * from sysobjects where xtype='TR';
六、查看已存在的触发器具体的代码
exec sp_helptext (触发器名字)
参考了http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html