如何查找指向 Oracle 中一条记录的外键依赖关系?

2024-02-16

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

我可以使用 Oracle 的 SQL Developer 工具和 AllRoundAutomations 的 PL/SQL Developer。

提前致谢!


这是我列出对表的所有引用的解决方案:

select
  src_cc.owner as src_owner,
  src_cc.table_name as src_table,
  src_cc.column_name as src_column,
  dest_cc.owner as dest_owner,
  dest_cc.table_name as dest_table,
  dest_cc.column_name as dest_column,
  c.constraint_name
from
  all_constraints c
inner join all_cons_columns dest_cc on
  c.r_constraint_name = dest_cc.constraint_name
  and c.r_owner = dest_cc.owner
inner join all_cons_columns src_cc on
  c.constraint_name = src_cc.constraint_name
  and c.owner = src_cc.owner
where
  c.constraint_type = 'R'
  and dest_cc.owner = 'MY_TARGET_SCHEMA'
  and dest_cc.table_name = 'MY_TARGET_TABLE'
  --and dest_cc.column_name = 'MY_OPTIONNAL_TARGET_COLUMN'
;

通过此解决方案,您还可以获得哪个表的哪一列引用目标表的哪一列的信息(并且您可以对其进行过滤)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何查找指向 Oracle 中一条记录的外键依赖关系? 的相关文章

随机推荐