2016-12-02 15 views
3

Ich versuche ein Szenario zu finden, bei dem der Trigger REFERENCED_TYPE in DBA_DEPDENDENCIES Tabelle wäre, was bedeutet, dass es Objekte in der DB gibt, die von TRIGGER abhängig sind. Kann es ein solches Szenario geben?Oracle kann ein übergeordnetes Objekt eines anderen db-Objekts sein?

Immer wenn ich einen Auslöser, der eine Funktion oder eine Funktion aufruft, die eine DML auslöst, auslösen würde, sehe ich, dass TRIGGER ein untergeordnetes Objekt (TYPE) aber nicht übergeordnetes Objekt (REFERENCED_TYPE) ist.

Antwort

3

Der Trigger muss referenziert werden (implizit können Sie einen Trigger nicht explizit referenzieren), um in der referenced_type Spalte der dba_dependencies Datenwörterbuchansicht angezeigt zu werden.

Can there be such a scenario ?

ist hier, den ich von jetzt denken kann (Sie auf Oracle 11g oder höher sein müssen). Sie erstellen eine Reihe von Triggern des gleichen Typs (gleicher Zeitpunkt) und legen die Reihenfolge der Auslösung fest: follows <<trigger_name>> oder 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

Vielen Dank. Das hilft. –

Verwandte Themen