2016-12-02 6 views
3

Я пытаюсь найти сценарий, где триггер будет REFERENCED_TYPE в таблице DBA_DEPDENDENCIES, что означает, что в базе данных есть объекты, которые зависят от TRIGGER. Может ли быть такой сценарий?Oracle может инициировать родительский объект другого объекта db?

Всякий раз, когда я создаю триггер, вызывающий функцию или функцию, вызывающую DML, которая запускает триггер, я вижу, что TRIGGER является дочерним объектом (TYPE), но не родительским объектом (REFERENCED_TYPE).

ответ

3

Должен быть указан триггер (неявно, вы не можете ссылаться (вызвать) триггер явно), чтобы появиться в столбце referenced_type окна словаря данных dba_dependencies.

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

Большое спасибо. Что помогает. –