1. 程式人生 > >ORACLE觸發器學習

ORACLE觸發器學習

第一節:觸發器簡介

具備某些條件,由資料庫自動執行的一些 DML 操作行為。

第二節:語句觸發器

語句觸發器針對整個表,作用整個表操作; 語法結構: Create trigger 觸發器名稱 Before/after 觸發動作 On
作用物件 觸發器謂詞:INSERTING、UPDATING、DELETING
建立觸發器並使用:

create trigger tr_book//建立觸發器
before insert//在執行insert前觸發
on t_book//在哪個表觸發
begin
  if user!= 'cc' then
    raise_application_error(-20001
,'許可權不足'); end if; end; 語句執行效果: SQL> create trigger tr_book 2 before insert 3 on t_book 4 begin 5 if user!= 'cc' then 6 raise_application_error(-20001,'許可權不足'); 7 end if; 8 end; 9 / Trigger created //建立完成後,去t_book表中插入資料時,如果不是cc使用者下會報“ora20001許可權不足”錯誤後面的操作也是根據對t_book表進行操作而觸發某動作

觸發器謂詞的使用

create trigger tr_book_log
before insert or update or delete
on t_book
begin
  if updating then
    insert into t_book_log values(user,'update',sysdate);
  else if inserting then
     insert into t_book_log values(user,'insert',sysdate);
  else if deleting then
     insert into t_book_log values
(user,'delete',sysdate);
end if; end if; end if; end;

第三節:行觸發器

行觸發器針對行記錄。
語法結構: Create trigger
觸發器名稱 Before/after
觸發動作 For each row
On 作用物件 觸發器內建變數 :old :new
行觸發器例子:

create trigger tr_book_add
after insert
on t_book
for each row
begin
  update t_booktype set num=num+1 where id=:new.typeId;
end;

第四節:觸發器禁用和開啟

禁用觸發器: alter trigger 觸發器名稱 disable
啟用觸發器: alter trigger 觸發器名稱 enable

alter trigger tr_book_add disable;