Oracle查詢schema的全資料表的外鍵限制(foreign key constraints)的方法如下。
使用下面sql查詢ALL_CONSTRAINTS
找出schema 'ABC'
的全部資料表的外鍵限制(foreign key constraints)及依賴關係(foreign key dependencies)。
SELECT
a.TABLE_NAME "REF_TABLE", -- 被參照的表
b.TABLE_NAME "REF_BY", -- 參照的表
b.CONSTRAINT_NAME "FK" -- 外鍵名稱
FROM ALL_CONSTRAINTS a, ALL_CONSTRAINTS b
WHERE b.CONSTRAINT_TYPE = 'R' -- Referential integrity
AND a.OWNER = 'ABC' -- schema名稱(使用者名稱)
AND b.OWNER = 'ABC' -- schema名稱(使用者名稱)
AND a.CONSTRAINT_NAME = b.R_CONSTRAINT_NAME
ORDER BY a.TABLE_NAME;
例如資料庫有兩資料表DEPARTMENT
及EMPLOYEE
。外鍵EMPLOYEE.DEPARTMENT_ID
參照至DEPARTMENT.ID
則以上sql查詢結果為:
+------------+----------+---------+
| REF_TABLE | REF_BY | FK |
+------------+----------+---------+
| DEPARTMENT | EMPLOYEE | FK_D_ID |
+------------+----------+---------+
若只要查詢指定資料表的外鍵限制,使用以下sql:
SELECT
a.TABLE_NAME "REF_TABLE", -- 被參照的表
b.TABLE_NAME "REF_BY", -- 參照的表
b.CONSTRAINT_NAME "FK"
FROM ALL_CONSTRAINTS a, ALL_CONSTRAINTS b
WHERE b.CONSTRAINT_TYPE = 'R'
AND a.OWNER = 'ABC' -- schema名稱(使用者名稱)
AND b.OWNER = 'ABC' -- schema名稱(使用者名稱)
AND a.CONSTRAINT_NAME = b.R_CONSTRAINT_NAME
AND b.TABLE_NAME IN ('DEPARTMENT') -- 填入要查看的資料表名稱
ORDER BY a.TABLE_NAME;
沒有留言:
張貼留言