在Oracle數據庫中,Oracle觸發器是一種自動執行響應數據庫變化的程序。下面就帶您一同了解一下Oracle觸發器的使用,供您參考學習。
我們可以設置為在觸發器事件之前或之後觸發或執行。能夠觸發觸發器事件的事件包括下面幾種:
DML事件
DDL事件
數據庫事件
DML事件觸發器可以是語句或行級觸發器。DML語句觸發器在觸發語句之前或之後觸發DML行級觸發器在語句影響的行變化之前或之後觸發。用戶可以給單一事件和類型定義多個觸發器,但沒有任何方法可以增強多觸發器觸發的命令。下表列出了用戶可以利用的觸發器事件:
事件 觸發器描述
INSERT 當向表或視圖插入一行時觸發觸發器
UPDATE 更新表或視圖中的某一行時觸發觸發器
DELETE 從表或視圖中刪除某一行時觸發觸發器
CREATE 當使用CREATE語句為數據庫或項目增加一個對象時觸發觸發器
ALTER 當使用ALTER語句為更改一個數據庫或項目的對象時觸發觸發器
DROP 當使用DROP語句刪除一個數據庫或項目的對象時觸發觸發器
START 打開數據庫時觸發觸發器,在事件後觸發
SHUTDOWN 關閉數據庫時觸發,事件前觸發
LOGON 當一個會話建立時觸發,事件前觸發
LOGOFF 當關閉會話時觸發,事件前觸發
SERVER 服務器錯誤發生時觸發觸發器,事件後觸發
創建觸發器的語法如下:
- CREATE [OR REPLACE] TRIGGER trigger_name
- {before|after|instead of} event
- ON {table_or_vIEw_name|DATABASE}
- [FOR EACH ROW[WHEN condition]]
- trigger_body
只有DML觸發器(INSERT、UPDATE、DELETE)語句可以使用INSTEAD OF觸發器並且只有表的DML觸發器可以是BEFORE或AFTER觸發器。
象約束一樣觸發器可以被設置為禁用或啟用來關閉或打開他們的執行體(EXECUTE),將觸發器設置為禁用或啟用使用ALTER TRIGGER語句:
- ALTER TRIGGER trigger_name ENABLE;
- ALTER TRIGGER trigger_name DISABLE;
要禁用或啟用表的所有觸發器,使用ALTER TABLE語句
- ALTER TABLE table_name DISABLE ALL TRIGGERS;
- ALTER TABLE table_name ENABLE ALL TRIGGERS;
刪除觸發器使用DROP TRIGGER
- DROP TRIGGER trigger_name;