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

Oracle中的觸發器

編輯:Oracle教程

Oracle中的觸發器


Oracle中的觸發器

觸發器是一種特殊的額存儲過程,它在發生某種數據庫時間時由Oracle系統自動觸發。觸發器通常用於加強數據庫的完整性約束和業務規則等,對於表來說,觸發器可以實現比CHECK約束更為復雜的約束。
Oracle中的觸發器的類型主要有DML觸發器、替代觸發器、系統事件觸發器和DDL觸發器。

觸發器的分類

DML觸發器
DML觸發器由DML語句觸發,例如INSERT、UPDATE和DELETE語句。
針對所有的DML事件,按照觸發器的時間可以將DML觸發器分為BEFORE觸發器和AFTER觸發器,分別表示在DML事件發生之前與之後采取行動。
另外,DML觸發器也可以分為語句級觸發器和行級觸發器,語句級觸發器針對某一條語句觸發一次,而行級觸發器針對語句所影響的每一行都觸發一次。 INSTEAD OF觸發器
INSTEAD OF觸發器(替代觸發器),用於執行一個替代操作來代替觸發事件的操作,例如針對INSERT事件的INSTEAD OF觸發器,它由INSERT語句觸發,當出現INSERT語句時,該語句不會被執行,而是執行INSTEAD OF觸發器中定義的語句。
系統事件觸發器
系統事件觸發器在發生如數據庫啟動或關閉等系統事件時觸發。 DDL觸發器
DDL觸發器由DDL語句觸發,如CREATE、ALTER和DROP語句。DDL觸發器同樣分為BEFORE觸發器與AFTER觸發器。

觸發器的創建

創建觸發器需要使用CREATE TRIGGER語句,其語法如下:

CREATE [OR REPLACE] TRIGGER trigger_name
[BEFORE|AFTER|INSTEAD OF] trigger_event
{ON table_name|view_name|DATABASE}
[FOR EACH ROW]
[ENABLE|DISABLE]
[WHEN trigger_condition]
[DECLARE declaration_statements;]
BEGIN
    trigger_body;
END [trigger_name]; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved