2016-12-02 5 views
3

私はテーブルにREFERENCED_TYPEのトリガーがあるシナリオを見つけようとしています。つまり、TRIGGERに依存するオブジェクトがDBにあります。このようなシナリオがありますか?Oracleは、別のdbオブジェクトの親オブジェクトにトリガーできますか?

私は、トリガを起動するDMLを呼び出す関数または関数を呼び出すトリガを作成するたびに、トリガが子オブジェクト(TYPE)であり親オブジェクト(REFERENCED_TYPE)ではないことがわかります。

答えて

3

dba_dependenciesデータ辞書ビューのreferenced_type列に表示するには、トリガーを参照する必要があります(暗黙的にトリガーを参照(呼び出し)できません)。ここで

Can there be such a scenario ?

は、私は今(あなたはOracle 11gの以上にする必要がある)と考えることができるものです。同じ種類(同じタイミングポイント)のトリガーを2つ作成し、発火順序を指定します(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

ありがとうございました。それは役に立ちます。 –

関連する問題