1 觸發器的概念
sql
觸發器是⼀一類特殊的存儲過程,其特殊性在於它 並不須要由⽤用戶來直接調⽤用,⽽而是在對錶或視圖發出 Insert 、Update或Delete語句時⾃自動觸發執⾏行的。所以,可將觸發器當作是信息的後過濾器。加密
使⽤用觸發器主要會利⽤用到兩張很重要的邏輯表:deleted表和inserted表。這兩張邏輯表有系統建立,並存在內存中。也稱爲虛 擬表。是隻讀的、不可修改的。當觸發器執⾏行完畢後,將會被刪 除。這兩張表存放了⽤用戶對錶的操做數據。 spa
格式:
code
Create trigger 觸發器名稱 On 表名 With encryption For insert,Update,delete As Sql語句 Go
insert觸發器內存
任務:在Users表中建立名爲tr_user1的觸發器,要求當 添加⼀一個新⽤用戶時,能立刻顯⽰示添加的新⽤用戶信息。 新的記錄信息在inserted表 Create trigger tr_user1 On users for insert as select * from inserted go
delete觸發器it
任務:在Users表中建立名爲tr_user2的觸發器,當刪除⼀個⽤戶於時,要求以下: 一、立刻顯⽰示被刪除的⽤用戶信息。 二、能輸出信息:被刪除的⽤用戶是** Create trigger tr_user2 on users for delete as select * from deleted select ‘被刪除的用戶是’+(select username for deleted) go
update觸發器io
任務:在Users表中建立名爲tr_user3的觸發器,要求當修改一個⽤用戶信息時,能立刻顯⽰示該⽤用戶修改前和修改後的信息。 Create trigger tr_user3 on users for update as select * from deleted select * from inserted go
練習class
任務: 本⽉月25⽇日編號爲9702的職員銷售了貨號爲1001,貨名爲CPU的貨物4個,銷售價格爲1000元。要求當插⼊入銷售記錄時,能⾃自動修改庫存表中的賣出數量。 create trigger tr_sell on sell with encryption for insert as update stock set sale_num = sale_num+(slelct sel_num for inserted) where ware_id = (select ware_id from inserted) go
修改觸發器date
alter trigger 觸發器名select
重命名觸發器
sq_rename 觸發器原來的名字,新名字
刪除觸發器
drop trigger 觸發器名
查看觸發器
查觸發器的信息 sp_help 觸發器名字
查看錶的觸發器類型 sp_helptrigger 觸發器所屬表的名稱
查看未加密的觸發器定義 sp_helpText 觸發器名稱
查看觸發器的依賴關係 sp_depends 觸發器名稱