如何查看表列表和触发器(和序列)列表?

时间:2013-09-25 11:05:07

标签: sql oracle triggers sequence

在我的数据库中有很多序列,触发器和表格。每次哪个表与哪个触发器(和序列)相关联时,我都感到困惑。如何在单个查询中查看这些列表?

4 个答案:

答案 0 :(得分:1)

在sql server中,您可以使用sys.triggers和sys.tables,例如

     select ta.name AS 'TableName', tg.name 'TriggerName' from sys.triggers tg 
     INNER JOIN sys.tables ta ON tg.parent_id = ta.object_id

答案 1 :(得分:0)

您可以从依赖表中获取此详细信息。

select * from user_dependencies where (referenced_type like 'TRIGGER' OR 
 referenced_type = 'SEQUENCE') and type = 'TABLE';

答案 2 :(得分:0)

在oracle中,您无法找到在哪个表上使​​用哪个序列,它在表级别上没有关联。为此,您需要找到代码,并搜索使用它的序列,可能是在插入触发器之前或PL / SQL代码中使用它。

对于触发器,您可以看到数据字典视图

select table_name,
       trigger_name as object_name,
       'TRIGGER' object_type 
from ALL_TRIGGERS

修改 我找到序列的方法是

  1. 假设我想检查“Seq_ID”的使用位置。
  2. 从dba_source中选择*,其中lower(text)如'%seq_id.nextval%';
  3. 这将告诉我序列被引用的代码,可能你可以在代码中找到insert语句,你可以发现这个序列与哪个表相关联
  4. 或者它会为您提供触发器代码,您可以从触发器中找到引用的表。

答案 3 :(得分:0)

您可以使用以下语句找到触发器和序列

    select 
         table_name, trigger_name, referenced_name as sequence_name
    from 
        all_triggers 
   join all_dependencies 
   on name = trigger_name and  referenced_type = 'SEQUENCE'
    ;