SQL Server 数据库开发
第8章 触发器
*重点一:触发器
1.定义:触发器是在对表或视图进行插入、更新或删除操作是自动执行的存储过程,有事务的特征,可以跨表操作。
2.分类:
(1)AFTER触发器(只能定义在表上)
insert触发器
update触发器
delete触发器
(2)INSERT OF触发器(可以定义在表和视图上)
3.语法:create triffer trigger_name
on table_name --要检测的表
[with encryprion]
[for/instead of] --触发器类型(视图只能用instead of)
[delete,insert,update] --要监测的操作
as
T-SQL语句
go
4.工作原理:
(1)先从表中删除要更新的行。
(2)把删除的行的副本插入deleted表中。
(3)再向原表中插入新行。
(4)把新行的副本插入inserted表。
(5)检查deleted和inserted表中的数据,确定是否需要回滚或其他操作。
if exists(select * from sys.triggers where name='trigger_del')
drop trigger trigger_del
go
create trigger trigger_del
on stuinfo ---要监测的表
with encryption
for delete
as
if exists(select * from sys.tables where name='stuinfo2')
begin
insert into stuinfo2 select stuName,stusex,classid from deleted --如果表中主键是自动增长,则不能把主键列存入新表中
end
else
begin
select stuName,stusex,classid into stuinfo2 from deleted
end
go
delete from StuInfo
select * from StuInfo2