gpt4 book ai didi

oracle - Oracle中如何查找具有外键的表?

转载 作者:行者123 更新时间:2023-12-02 10:15:16 28 4
gpt4 key购买 nike

我计划从一个表中删除数据,我想知道有多少个表以及哪些表有外键引用 Oracle 中的这个特定表。因为我必须将外键设置为空。我想知道与该特定表有 FK 的所有表的列表。

最佳答案

SELECT
FK.OWNER||'.'||FK.TABLE_NAME AS CHILD_TABLE,
SRC.OWNER||'.'||SRC.TABLE_NAME AS PARENT_TABLE,
FK.CONSTRAINT_NAME AS FK_CONSTRAINT,
SRC.CONSTRAINT_NAME AS REFERENCED_CONSTRAINT
FROM ALL_CONSTRAINTS FK
JOIN ALL_CONSTRAINTS SRC ON FK.R_CONSTRAINT_NAME = SRC.CONSTRAINT_NAME
WHERE
FK.CONSTRAINT_TYPE = 'R'
AND SRC.OWNER = 'MY_SCHEMA'
AND SRC.TABLE_NAME = 'MY_TABLE';

我遇到的情况是,我感兴趣的表不属于我连接的模式。所以我需要修改currently accepted answer中的查询使用ALL_CONSTRAINTS而不是USER_CONSTRAINTS 。在这个过程中,我犯了一个错误,我发现接受的答案很难阅读,所以我可以修复它。 (缺乏解释并没有帮助。)结果,我最终提出了自己的查询。基本上是一样的,但是我觉得这样更容易理解一些。

FK.CONSTRAINT_TYPE = 'R'向下过滤FK到一组外键约束,并且连接将这些外键与其“引用的约束”配对。 (引用的约束通常是“父”表的主键。)最后,我们使用 SRC.OWNER = 'MY_SCHEMA' AND SRC.TABLE_NAME = 'MY_TABLE' 过滤到我们感兴趣的父表。 .

当然,您可以将其切换为使用 USER_CONSTRAINTS如果你希望;只需删除 SRC.OWNER检查和 OWNER SELECT 中的前缀.

关于oracle - Oracle中如何查找具有外键的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com