一、觸發器的概述
1、含義
- 制定一個規則,在我們做增刪改操作的時候,只要滿足該規則,自動觸發,無需調用。
2、觸發器分類
- 語句級觸發器:不包含有for each row的觸發器。
- 行級觸發器:包含有for each row的就是行級觸發器。
注意:
- 加for each row是爲了使用:old或者:new對象或者一行記錄;
- :new --爲一個引用最新的列值;:old --爲一個引用以前的列值;
二、創建觸發器
1、語法結構
CREATE [or REPLACE] TRIGGER 觸發器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(條件) ] ]
begin
PLSQL 塊
End 觸發器名;
2、語句級觸發器實例
create or replace trigger t1
after
insert
on person
declare
begin
dbms_output.put_line('一個新員工入職');
end;
3、行級觸發器實例
create or replace trigger t2
before
update
on emp
for each row
declare
begin
if :old.sal>:new.sal then
raise_application_error(-20001, '不能給員工降薪');
end if;
end;
三、使用觸發器
1、啓用觸發器
- 啓用所有觸發器:ALTER TRIGGER <觸發器名> ENABLE ALL TRIGGERS
- 重新啓用觸發器:ALTER TRIGGER <觸發器名> ENABLE
2、禁用觸發器
- 禁用某個觸發器:ALTER TRIGGER <觸發器名> DISABLE
- 禁用所有觸發器:ALTER TRIGGER <觸發器名> DISABLE ALL TRIGGERS
3、刪除觸發器
DROP TRIGGER <觸發器名>