2016-12-02 43 views
3

我正在試圖找到一個場景,其中觸發器將在DBA_DEPDENDENCIES表中爲REFERENCED_TYPE,這意味着DB中有對象取決於TRIGGER。會有這種情況嗎?Oracle可以觸發另一個數據庫對象的父對象嗎?

每當我創建一個觸發器調用一個函數或調用一個觸發DML的函數時,我會發現TRIGGER是一個子對象(TYPE)而不是父對象(REFERENCED_TYPE)。

回答

3

觸發需要引用(隱式,你不能引用(調用)觸發明確地)出現在dba_dependencies數據字典視圖的列referenced_type

Can there be such a scenario ?

這是一個我現在(你需要在Oracle 11g或更高)能想到的。您可以創建幾個相同類型的觸發器(同一個時間點)並指定觸發順序:follows <<trigger_name>>precedes <<trigger_name>>

--drop table foo purge; 

create table foo(c1 number); 

create or replace trigger tr_foobi_1 
before insert on foo 
for each row 
begin 
    null; 
end; 
/

create or replace trigger tr_foobi_2 
before insert on foo 
for each row 
follows tr_foobi_1 
begin 
    null; 
end; 
/

column name format a10; 
column type format a10; 
column referenced_name format a17; 
column referenced_type format a17; 

select name 
    , type 
    , referenced_name 
    , referenced_type 
    from dba_dependencies 
where referenced_type = 'TRIGGER'; 

Result: 

NAME  TYPE  REFERENCED_NAME REFERENCED_TYPE 
---------- ---------- ----------------- ----------------- 
TR_FOOBI_2 TRIGGER TR_FOOBI_1  TRIGGER   
+0

非常感謝。這有幫助。 –

相關問題