Oracle

如何檢索外鍵約束數據

  • September 28, 2021

我正在尋找一個允許檢索整個架構的外鍵資訊(每行:引用表和欄位,引用表和欄位)的查詢。

我找到了這個,但沒有提供我需要的所有資訊: https ://stackoverflow.com/questions/4389228/sql-for-oracle-to-check-if-a-constraint-exists

我目前正在研究它,可能會在接下來的幾分鐘/幾小時內找到解決方案。但是如果有人已經有了一個完整的工作解決方案,我會很高興知道它:)

在打開表的設計表視窗時對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

引用自:https://dba.stackexchange.com/questions/11047