Oracle(十):PLSQL編程之觸發器

一、觸發器的概述

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 <觸發器名>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章