sql - ORACLE SQL 获取源表作为 FK 引用的所有目标表列
问题描述
使用:Oracle SQL 开发人员
我需要一个 Oracle SQL 查询,它从引用父表的所有子表(Table Employee
和)中返回所有与外键相关的列Table Building
Table Organizational unit
我的示例的结果如下所示:
选择所有表的所有列,这些表有一个条目被引用为表Table Organizational unit
WHERE的外键Table Organizational unit.Code = 'HR'
--Result
Table Building
ID , ORG_UNIT_REF, Building Type
152, 2 , Main Building
Table Employee
ID, ORG_UNIT_REF, Employee Name
13, 2 , Max Doe
这意味着所有的表及其表名、列名和匹配的列内容都必须打印出来。
我已经使用这个答案找到了所有的引用表和约束名称
SELECT a.table_name, a.column_name, a.constraint_name, c.owner,
-- referenced pk
c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk
FROM all_cons_columns a
JOIN all_constraints c ON a.owner = c.owner
AND a.constraint_name = c.constraint_name
JOIN all_constraints c_pk ON c.r_owner = c_pk.owner
AND c.r_constraint_name = c_pk.constraint_name
WHERE c.constraint_type = 'R'
AND a.table_name = :TableName
对于我的示例,上面的查询给了我类似的东西:
"TABLE_NAME","CONSTRAINT_NAME","STATUS","OWNER"
"Table Employee","FK_CONSTRAINT","ENABLED","TESTSCHEMA"
"Table Building","FK_CONST","ENABLED","TESTSCHEMA"
现在我知道所有引用我的父表的子表Organizational unit
。现在我还想要一个查询,它可以获取外键匹配的所有表中的所有行。
解决方案
推荐阅读
- angularjs - angularjs拦截器和responseError返回错误的响应HTTP代码
- sql - 在 w3schools 网站上的 SQL 示例中使用 ALL
- c - 删除尾巴不返回正确的列表
- java - Json 到 Java 对象 - 由于相同的字段而失败
- javascript - 如何选择并显示最常用的字符串
- sapui5 - 为什么它不会在 UI5 中的列表事件 itemPress 上打开功能?
- onedrive - 一次性创建嵌套文件夹 - OneDrive API
- spring-boot - Spring Data GemFire DiskStore
- python - tf.constant 和 tf.Variable 之间的区别(trainable=False)
- visual-studio - 如何删除代码行周围的框?