Oracle 11g 的新特性 —— 組合觸發器 (Compound Triggers)

來源:互聯網
上載者:User

之前我們介紹了 Oracle 11g 新特性中的 虛擬列 和 唯讀表,今天我們介紹另外一個新特性 —— 組合觸發器。

在以前版本的 Oracle 中,你可通過 FOLLOWS 關鍵字來控制觸發器執行的順序,例如:

 
01 CREATE OR REPLACE TRIGGER XXX_TRG  
02    BEFORE INSERT  
03    ON XXX_TABLE_NAME  
04    REFERENCING NEW AS NEW OLD AS OLD  
05    FOR EACH ROW  
06    FOLLOWS YYY_TRG  
07 DECLARE  
08 BEGIN  
09    NULL;  
10 END;

Oracle 11g 支援名為組合觸發器的新特性,其作用跟 FOLLOWS 差不多,只是方式不同。

觸發器定時

在瞭解組合觸發器之前,我們先寫一個簡單的定時觸發器。

定時觸發器是觸發器將要執行的時間,例如 BEFORE STATEMENT, AFTER STATEMENT, BEFORE EACH ROW, 和 AFTER EACH ROW

可以在一個組合觸發器做所有的觸發動作。

組合觸發器指南

a- 組合觸發器合并了所有的定時觸發器
b- 組合觸發器僅限執行 DML 操作,不支援 DDL 和系統操作
c- 你只可在行級代碼塊中使用 :OLD 和 :NEW 變數標識符 (BEFORE EACH ROW, AFTER EACH ROW)
d- 不支援 PRAGMA_AUTONOMOUS_TRANSACTION
e- 你可使用 WHEN 語句來提升觸發器效能,但組合觸發器不支援
f- 所有的定時觸發器共用一個聲明部分中的變數,直到事務結束。
g- 允許在組合觸發器中重複執行某定時觸發器
h- INSERTING, UPDATING 和 DELETING 謂詞在組合觸發器中仍然有效
i- 解決變異表錯誤 Resolve mutating table error (ORA-04091)

組合觸發器文法:

 
01 CREATE OR REPLACE TRIGGER XXX_TRG  
02  FOR INSERT OR UPDATE OR DELETE ON XXX_TABLE_NAME  
03  COMPOUND TRIGGER  
04      
05 DECLARE  
06    --DECLARATION SECTION FOR ALL TRIGGER TIMING USED
07 BEGIN  
08   BEFORE STATEMENT IS  
09   NULL;  
10      
11   AFTER STATEMENT IS  
12   NULL;  
13      
14   BEFORE EACH ROW IS  
15   NULL;  
16      
17   AFTER EACH ROW IS  
18   NULL
19   
20   INSTEAD OF ROW IS  
21   NULL;  
22   
23 END;

注意 BEFORE STATEMENT, AFTER STATEMENT, BEFORE EACH ROW 和 AFTER EACH ROW 是可選部分,你可根據需要使用。

INSTEAD OF ROW 只用於資料庫檢視。

如果你查看數字字典視圖 USER_TRIGGERS 你會發現一些新的列 (BEFORE_STATEMENT, BEFORE_ROW, AFTER_ROW, AFTER_STATEMENT, INSTEAD_OF_ROW) ,這些列是跟組合觸發器相關的。

結論

組合觸發器帶來的好處:

1- 在一個地方實現事務(?)
2- 所有觸發器可共用聲明段
3- 維護單元

4- 解決變異表錯誤 (ORA-04091)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.