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命令就可...