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

标签 database oracle database-schema

我有一个非常大的 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'
;

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

关于database - 如何找到指向 Oracle 中一条记录的外键依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509512/

相关文章:

ruby-on-rails - 如何回滚特定迁移?

javascript - 根据表格内容插入图片

database - 非规范化对查询、连接和响应时间有什么影响?

python - 如何使用另一个表中的数据更新 Python 中的 oracle 表

oracle - 哪个 Oracle View 包含所有约束?

oracle - 配置Grails应用程序以在开发中使用Oracle驱动程序,但在进行 war 时不将其包括在内

mysql - 如何获取表 XYZ 的 ABC 数据库的数据库转储以及仅organization_id "22"的数据库转储?

mysql - 创建一个 preg_match 过滤器,以便只有没有重复的新 facebook 粉丝页面被添加到 sql 数据库

sql-server - SQL Server 按架构还原和备份

php - Laravel - 动态创建表(无需迁移)