*重点一:触发器 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
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