Sql 如何查看表列表和触发器列表(以及序列)?
在我的数据库中有很多序列、触发器和表。每当哪个表与哪个触发器(和序列)关联时,我都会感到困惑。如何在单个查询中查看这些列表 您可以从依赖关系表中获取此详细信息Sql 如何查看表列表和触发器列表(以及序列)?,sql,oracle,triggers,sequence,Sql,Oracle,Triggers,Sequence,在我的数据库中有很多序列、触发器和表。每当哪个表与哪个触发器(和序列)关联时,我都会感到困惑。如何在单个查询中查看这些列表 您可以从依赖关系表中获取此详细信息 select * from user_dependencies where (referenced_type like 'TRIGGER' OR referenced_type = 'SEQUENCE') and type = 'TABLE'; 在sql server中,可以使用sys.triggers和sys.tables,如
select * from user_dependencies where (referenced_type like 'TRIGGER' OR
referenced_type = 'SEQUENCE') and type = 'TABLE';
在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
在oracle中,您无法找到在哪个表上使用的序列,它在表级别上没有关联。为此,您需要查找代码,并搜索使用它的序列,可能是在插入触发器之前使用的,也可能是在PL/SQL代码中使用的 对于触发器,您可以看到数据字典视图
select table_name,
trigger_name as object_name,
'TRIGGER' object_type
from ALL_TRIGGERS
编辑
我找到序列的方法是
您可以使用以下语句找到触发器和序列
select
table_name, trigger_name, referenced_name as sequence_name
from
all_triggers
join all_dependencies
on name = trigger_name and referenced_type = 'SEQUENCE'
;
现在显示选定的行Oracle中的序列和表之间没有关系,因此没有列出依赖项
用户依赖项
。要获取与表相关的触发器,条件必须是反过来的type='TRIGGER'和referenced\u type='table'
。顺便说一句:在没有通配符的情况下使用像一样的是没有任何意义的。它是模式中的触发器和表。如果不是,则使用带有模式过滤器的所有依赖项表。问题显然是关于Oracle的。我认为,无论这是Oracle问题,解决方案都适用于sql server。请投票鼓励我成为新来的……对不起,但是为什么我要投票给一个对提问者不起作用的答案呢?@Alex Poole我看到了,但它显示了零行selected@guruv那么,如何查看哪个表与哪个序列关联?@user2801653:请查找编辑部分GUD,但在脚本结果中仅显示当前支持的5000行的列结尾