如何检索外键约束数据

Fro*_*y Z 10 oracle foreign-key query

我正在寻找一个查询,允许检索整个模式的外键信息(每行:引用表和字段、引用表和字段)。

我找到了这个,但没有提供我需要的所有信息:https : //stackoverflow.com/questions/4389228/sql-for-oracle-to-check-if-a-constraint-exists

我目前正在研究它,可能会在接下来的几分钟/几小时内得到解决方案。但是如果有人已经有了完整的工作解决方案,我会很高兴知道它:)

Fro*_*y Z 15

在打开设计表窗口时,对Navicat工具所做的查询进行一些“逆向工程”后(检索历史窗口中显示的外键信息的查询),这里是一个解决方案:

SELECT
    CONS.CONSTRAINT_NAME,
    CONS.TABLE_NAME,
    COLS.COLUMN_NAME,
    CONS.R_CONSTRAINT_NAME,
    CONS_R.TABLE_NAME R_TABLE_NAME,
    COLS_R.COLUMN_NAME R_COLUMN_NAME

FROM USER_CONSTRAINTS CONS
    LEFT JOIN USER_CONS_COLUMNS COLS ON COLS.CONSTRAINT_NAME = CONS.CONSTRAINT_NAME
    LEFT JOIN USER_CONSTRAINTS CONS_R ON CONS_R.CONSTRAINT_NAME = CONS.R_CONSTRAINT_NAME
    LEFT JOIN USER_CONS_COLUMNS COLS_R ON COLS_R.CONSTRAINT_NAME = CONS.R_CONSTRAINT_NAME

-- returns only foreign key constraints
WHERE CONS.CONSTRAINT_TYPE = 'R'

ORDER BY CONS.TABLE_NAME, COLS.COLUMN_NAME
Run Code Online (Sandbox Code Playgroud)