*重點一:觸發器 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