摘自百度百科:觸發器(trigger)是SQL server 提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用於加強數據的完整性約束和業務規則等。
觸發器的類型
觸發器分為語句級觸發器和行級觸發器(for each row)
1)語句級觸發器:是指在指定的操作語句之前或之后執行一次,不管影響多少行, 都只會執行一次。
2)行級觸發器:觸發語句作用的每一條記錄都被觸發也就是影響多少行,就觸發多少次。在行級觸發器中使用old和new偽記錄變量,識別值的狀態。
:old 代表舊的記錄, 更新前的記錄------:new 代表的是新的記錄
觸發器基本語法:
create [or replace] trigger trigger_name
before|after
delete|insert|update [of 列名]
on 表名
[for each row [where 條件]]
declare
...
begin
plsql塊
end trigger_name;
例如:插入員工之后打印一句話
create or replace trigger inputtest
before insert on person
declare
begin
dbms_output.put_line('歡迎新員工');
end inputtest;
insert into person values(123,'jason','hello');
結果輸出:歡迎新員工。
操作語句與偽指令的含義如下表:
需要注意的是:觸發器中不能提交事務,也不能回滾事務。如果出現了錯誤就需要拋出異常。
以上就是觸發器的基本知識和簡單應用。