程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 你是否了解Oracle觸發器

你是否了解Oracle觸發器

編輯:Oracle數據庫基礎

本人很喜歡Oracle,在工作中也很喜歡總結關於Oracle觸發器的經驗教訓,下面就這個問題來詳細說說吧。Oracle觸發器有兩種after和before,區別在於每次提交事務觸發一次和每一行數據的更新都觸發一次,使用時候要注意,以免達不到目的

Oracle產生數據庫觸發器的語法為:
create [or replace] trigger 觸發器名 觸發時間 觸發事件
on 表名
[for each row]
pl/sql 語句

其中:Oracle觸發器名:觸發器對象的名稱。由於觸發器是數據庫自動執行的,因此該名稱只是一個名稱,沒有實質的用途。

Oracle觸發時間:指明觸發器何時執行,該值可取:
before---表示在數據庫動作之前觸發器執行;
after---表示在數據庫動作之後出發器執行。

Oracle觸發事件:指明哪些數據庫動作會觸發此觸發器:
insert:數據庫插入會觸發此觸發器;
update:數據庫修改會觸發此觸發器;
delete:數據庫刪除會觸發此觸發器。

表 名:數據庫觸發器所在的表。
for each row:對表的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。

舉例:下面的觸發器在更新表auths之前觸發,目的是不允許在

周末修改表:

  1. create trigger auth_secure  
  2. before insert or update or delete   
  3. //對整表更新前觸發  
  4. on auths  
  5. begin  
  6. if(to_char(sysdate,'DY')='SUN'  
  7. RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');  
  8. end if;  
  9. end 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved