trigger dependencies

有时候,会想知道某个表是不是会有一些trigger去更新它。 但是一般更新语句是写在trigger 内部,所以我不确定 dba_dependencies这个视图能不能存储这种依赖关系。 做个试验:

创建两个表,t1 和 t2

SQL> create table t1(val number);

Table created.

SQL> create table t2(val number);

Table created.

  

创建一个trigger test。 该trigger构建在t1上,每次t1插入一条记录。在t2中插入数字8。

SQL> create trigger test
  2     before insert on scott.t1
  3  begin
  4     insert into scott.t2 values(8);
  5  end;
  6  /

Trigger created.

  

ok。 test是基于t1触发的,所以在dba_dependencies中查到他们的依赖关系是很明显的。那么对于t2能查到吗? 我们试一下:

SQL> select owner,name,type,REFERENCED_OWNER,REFERENCED_NAME,REFERENCED_NAME from dba_dependencies where name='TEST';

OWNER    NAME     TYPE     REFERENCED_OWNER   REFERENCED_NAME    REFERENCED_NAME
-------- -------- -------- ------------------ ------------------ ------------------
SYS      TEST     TRIGGER  SCOTT              T1                 T1
SYS      TEST     TRIGGER  SCOTT              T2                 T2

  

可以看到,都能查到。所以我们通过dba_dependencies是可以查到trigger和table的依赖关系的。即使这种依赖关系是在内部代码中。

原文地址:https://www.cnblogs.com/kramer/p/3467518.html