oracle数据库有触发器,Oracle数据库触发器(Triggers)
觸發(fā)器是一種自動(dòng)執(zhí)行響應(yīng)數(shù)據(jù)庫變化的程序。可以設(shè)置為在觸發(fā)器事件之前或之后觸發(fā)或執(zhí)行。能夠觸發(fā)觸發(fā)器事件的事件包括下面幾種:
DML事件
DDL事件
數(shù)據(jù)庫事件
DML事件觸發(fā)器可以是語句或行級觸發(fā)器。DML語句觸發(fā)器在觸發(fā)語句之前或之后觸發(fā)DML行級觸發(fā)器在語句影響的行變化之前或之后觸發(fā)。用戶可以給單一事件和類型定義多個(gè)觸發(fā)器,但沒有任何方法可以增強(qiáng)多觸發(fā)器觸發(fā)的命令。下表列出了用戶可以利用的觸發(fā)器事件:
事件 觸發(fā)器描述
INSERT? 當(dāng)向表或視圖插入一行時(shí)觸發(fā)觸發(fā)器
UPDATE? 更新表或視圖中的某一行時(shí)觸發(fā)觸發(fā)器
DELETE 從表或視圖中刪除某一行時(shí)觸發(fā)觸發(fā)器
CREATE 當(dāng)使用CREATE語句為數(shù)據(jù)庫或項(xiàng)目增加一個(gè)對象時(shí)觸發(fā)觸發(fā)器
ALTER 當(dāng)使用ALTER語句為更改一個(gè)數(shù)據(jù)庫或項(xiàng)目的對象時(shí)觸發(fā)觸發(fā)器
DROP 當(dāng)使用DROP語句刪除一個(gè)數(shù)據(jù)庫或項(xiàng)目的對象時(shí)觸發(fā)觸發(fā)器
START 打開數(shù)據(jù)庫時(shí)觸發(fā)觸發(fā)器,在事件后觸發(fā)
SHUTDOWN? 關(guān)閉數(shù)據(jù)庫時(shí)觸發(fā),事件前觸發(fā)
LOGON 當(dāng)一個(gè)會話建立時(shí)觸發(fā),事件前觸發(fā)
LOGOFF 當(dāng)關(guān)閉會話時(shí)觸發(fā),事件前觸發(fā)
SERVER 服務(wù)器錯(cuò)誤發(fā)生時(shí)觸發(fā)觸發(fā)器,事件后觸發(fā)
創(chuàng)建觸發(fā)器的語法如下:
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觸發(fā)器(INSERT、UPDATE、DELETE)語句可以使用INSTEAD OF觸發(fā)器并且只有表的DML觸發(fā)器可以是BEFORE或AFTER觸發(fā)器。
象約束一樣觸發(fā)器可以被設(shè)置為禁用或啟用來關(guān)閉或打開他們的執(zhí)行體(EXECUTE),將觸發(fā)器設(shè)置為禁用或啟用使用ALTER TRIGGER語句:
ALTER TRIGGER trigger_name ENABLE;
ALTER TRIGGER trigger_name DISABLE;
要禁用或啟用表的所有觸發(fā)器,使用ALTER TABLE語句
ALTER TRIGGER table_name DISABLE ALL TRIGGER;
ALTER TRIGGER table_name ENABLE ALL TRIGGER;
刪除觸發(fā)器使用DROP TRIGGER
DROP TRIGGER trigger_name;
總結(jié)
以上是生活随笔為你收集整理的oracle数据库有触发器,Oracle数据库触发器(Triggers)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jenkins之构建触发器(Build
- 下一篇: Triggers can not be