dml觸發器觸發時,dml語句的執行順序:
1、語句之前級觸發器
2、行之前級觸發器
3、語句本身
4、行之後級觸發器
5、語句之後級觸發器
例如對錶table_new進行更新,使用臨時表記錄觸發器的激發順序,如**所示:
臨時表記錄如下:/*語句之前級觸發器*/
create or replace trigger bstatement
before update on table_new
begin
trigpackage.v_counter := 0;
insert into temp_table
(num_col, char_col)
values
(trig_seq.nextval,
'before statement: counter = ' || trigpackage.v_counter);
trigpackage.v_counter := trigpackage.v_counter + 1;
end bstatement;
/*行之前級觸發器*/
create or replace trigger brow
before update on table_new
for each row
begin
insert into temp_table
(num_col, char_col)
values
(trig_seq.nextval, 'before row: counter = ' || trigpackage.v_counter);
trigpackage.v_counter := trigpackage.v_counter + 1;
end brow;
/*行之後級觸發器*/
create or replace trigger arow
after update on table_new
for each row
begin
insert into temp_table
(num_col, char_col)
values
(trig_seq.nextval, 'after row: counter = ' || trigpackage.v_counter);
trigpackage.v_counter := trigpackage.v_counter + 1;
end arow;
/*語句之後級觸發器*/
create or replace trigger astatement
after update on table_new
begin
insert into temp_table
(num_col, char_col)
values
(trig_seq.nextval,
'after statement: counter = ' || trigpackage.v_counter);
trigpackage.v_counter := trigpackage.v_counter + 1;
end astatement;
DDL觸發器與DML觸發器比較
dml觸發器 要防止對資料庫架構進行某些更改。希望資料庫中發生某種情況以響應資料庫架構中的更改。要記錄資料庫架構中的更改或事件。僅在執行觸發 ddl 觸發器的 ddl 語句後,ddl 觸發器才會激發。ddl 觸發器無法作為 instead of 觸發器使用。下面的示例顯示如何使用 ddl 觸發器阻止...
DML觸發器的缺憾
tom說過他希望三樣東西不曾存在 觸發器,自治事務,when others 級聯刪除 級聯修改,在設計良好的系統中是不存在的 即使有,那也是小概率事件,必須專門寫一段指令碼來解決,而不是作為常規功能存在 不得不用觸發器,要麼是原系統模組化做得不夠好,要麼是不允許改動原有的 當然有時候不是不允許,而是...
ebs form 觸發器順序
觸發器執行順序 1 當開啟form時 1 pre form 2 pre block block級 3 when new form instance 4 when new block instance 5 when new record instance 6 when new item instanc...