談談幾種觸發器

2021-09-05 18:37:03 字數 1553 閱讀 1611

oracle資料庫有四種觸發器,分別是dml、instead-of、ddl、db觸發器,一般的應用系統中都是用到dml、instead-of觸發器,

ddl、db兩種觸發器是dba管理資料庫用得比較多

..................

四種觸發器分別有不同的作用

一、dml觸發器:當發出update、insert、delete命令就可以觸發已定義好的

dml觸發器,是最簡單和常用的一種觸發器

語法:create or replace trigger trigger_name

after|before insert|update|delete

on table_name

for each row

二、instead-of觸發器:當向乙個由多個表聯接成的檢視作dml操作時,一般情況下是不允許的,這時候就可以用instead-of觸發器

來解決這種問題(在觸發器寫**分別對各表作相應dml操作),語法是這樣的:

create or replace trigger trigger_name

instead of insert|update|delete

on view_name

for each row

三、ddl觸發器:當發出create、alter、drop、truncate命令時會觸發已定義好的ddl觸發器,這種觸發器可以用來監控某個使用者或

四、db事件觸發器:當startup、shutdown、logon、logoff資料庫時就會觸發db事件觸發器,這種觸發器可以用來監控資料庫什麼時

候關閉/打,或者使用者的logon/logoff資料庫情況

語法:create or replace trigger trigger_name

before|after startup|shutdown|logon|logoff

on database

例:--記錄資料庫關閉的時間(shutdown型別要用關鍵字before,startup用after)

create or replace trigger db_shutdown

before shutdown

on database

begin

insert into test_tbl(log_event) values('db shutdown at '||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));

commit;

end;

--記錄使用者logon時間(logoff型別要用關鍵字before,logon用after)

create or replace trigger user_logon_db

after logon

on database

begin

insert into test_tbl(username,logon_time) values(user,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));

commit;

end;

注意:要建立ddl和db事件這兩種觸發器必須要有dba的許可權才行

談談幾種觸發器

oracle資料庫有四種觸發器,分別是dml instead of ddl db觸發器,一般的應用系統中都是用到dml instead of觸發器,ddl db兩種觸發器是dba管理資料庫用得比較多 四種觸發器分別有不同的作用 一 dml觸發器 當發出update insert delete命令就可...

談談幾種觸發器

oracle資料庫有四種觸發器,分別是dml instead of ddl db觸發器,一般的應用系統中都是用到dml instead of觸發器,ddl db兩種觸發器是dba管理資料庫用得比較多 四種觸發器分別有不同的作用 一 dml觸發器 當發出update insert delete命令就可...

談談幾種觸發器

oracle資料庫有四種觸發器,分別是dml instead of ddl db觸發器,一般的應用系統中都是用到dml instead of觸發器,ddl db兩種觸發器是dba管理資料庫用得比較多 四種觸發器分別有不同的作用 一 dml觸發器 當發出update insert delete命令就可...