Oracle
如何檢索外鍵約束數據
我正在尋找一個允許檢索整個架構的外鍵資訊(每行:引用表和欄位,引用表和欄位)的查詢。
我找到了這個,但沒有提供我需要的所有資訊: 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