ORACLE觸發器學習
阿新 • • 發佈:2018-12-30
第一節:觸發器簡介
具備某些條件,由資料庫自動執行的一些 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;