如何在Oracle中找到指向一条记录的外键依赖项?

人气:1,096 发布:2022-10-16 标签: database oracle database-schema

问题描述

我有一个非常大的Oracle数据库,有许多表和数百万行。我需要删除其中的一个,但希望确保删除它不会破坏指向它作为外键记录的任何其他依赖行。有没有办法获得指向此行的所有其他记录的列表,或者至少是表模式?我知道我可以尝试自己删除它,然后捕获异常,但我不会自己运行脚本,需要它第一次干净地运行。

我可以随心所欲地使用Oracle的SQL Developer和AllRoundAutomations的PL/SQL Developer。

提前谢谢!

推荐答案

我总是查看开始表的外键,然后返回。数据库工具通常有一个依赖项或约束节点。我知道PL/SQL Developer有办法查看FK,但我已经有一段时间没有使用它了,所以我无法解释...

只需将XXXXXXXXXX替换为表名...

/* The following query lists all relationships */ 

select
 a.owner||'.'||a.table_name "Referenced Table"
,b.owner||'.'||b.table_name "Referenced by"
,b.constraint_name "Foreign Key"
from all_constraints a, all_constraints b 
where 
b.constraint_type = 'R'
and a.constraint_name = b.r_constraint_name 
and b.table_name='XXXXXXXXXXXX' -- Table name 
order by a.owner||'.'||a.table_name

968