Trigger

DML触发器:是当数据库发生数据语言操作事件时会自动执行的存储过程。(DELETE,UPDATE,INSERT)

(1)AFTER触发器:这类触发器是在记录已经改变完之后,才会被激活的,主要是记录变更之后的处理或检查,一旦发现错误也可以用rollback transaction返回操作

(2)INSTEAD OF触发器:取代原来操作,在记录变更之前发生的。他并不执行原来SQL语句里的操作。

DDL触发器:(sql2005)响应数据定义语言语句时触发,一般用于数据库中执行管理任务。(CREATE,ALTER,DROP,GRANT,DENY,REVOKE,UPDATE STATISTICS)

语法:

CREATE TRIGGER trigger_name
on {table_name | view}
[with encryption]
{FOR | AFTER | INSTEAD OF}
{[INSERT][DELETE][UPDATE]}
[not for replication]
AS sql_statement [....n]

不能在视图上定义AFTER触发器

DDL触发器:

create trigger t1
on database
for create_table
as
 print '想创建表,没门'
 rollback

create table mytable(id int)

DML触发器:

create trigger t2
on athlete
for insert
as print '想插入数据,没门'
rollback

DML触发器有两个特殊的表inserted,deleted.

插入表里存放的是更新前得记录:对于插入记录操作来说,插入表里存放的是要插入的数据。对于更新记录操作来说,插入表存放的是要更新的记录。

删除表里存放的是更新后的记录:对于更新记录操作来说,删除表里存放的是更新前得记录(更新完后立即删除);对于删除记录来说,删除表里存入的是被删除的旧记录。

select * from test2
drop trigger trig
create trigger tg1
on test2
for delete,update,insert
as
 select * from inserted
 select * from deleted

delete操作:

insert操作:

update操作:

原文地址:https://www.cnblogs.com/yk00/p/2917954.html