触发器概念
触发器概念
SQL Server触发器分为DML触发器和DDL触发器这两种。
- DML触发器,执行INSERT、 DELETE 、UPDATE语句时触发。DML触发器可以实现数据的完整性、多个表间数据的一致性等。比如,实现外键的功能,当向CJB中插入记录时,保证学号是XSB表中已存在的;再如,可通过对XSB表定义DELETE触发器,实现在XSB表中删除一个学生时,同时删除CJB表中所有该学生的记录。
- DDL触发器,只由T-SQL语句触发。是SQL Server 2005新增的功能,也是由相应的事件触发,但DDL触发器在执行CREATE、ALTER、DROP等语句时触发。
在触发器中可以使用两个特殊的虚拟表inserted和deleted:
- inserted表存放新增的记录
- deleted表存放被删除的记录
Update操作时:新的记录存入inserted表,旧的记录存入deleted表。
##创建DML触发器(掌握)
create trigger 触发器名 on 表名/视图名
{ for | after | instead of }
{ insert [,] | update [,] | delete }
as
begin
触发器需要执行的逻辑
end;
##创建DDL触发器(了解)
create trigger 触发器名 on 数据库作用域/服务器作用域
{ for | after }
{ 事件类型 }
as
begin
触发器需要执行的逻辑
end;
事件类型:CREATE_对象类型、DROP_对象类型、ALTER_对象类型
对象类型:DATABASE、TABLE、VIEW等
触发器练习
创建DML触发器:当删除XSB表中的一条学生记录时将CJB表中该学生的相应记录也删除
create trigger T_XSB_DELETE on XSB
after
delete
as
begin
delete from CJB where 学号 in (select 学号 from deleted)
end;
触发DML触发器:
delete from XSB where 学号 = '081101';
删除DML触发器:
drop trigger T_XSB_DELETE;