Q
表的外鍵到表x
1
A
回答
3
外鍵參考一次(或唯一的)鍵,而不是表。所以首先要爲XYZ建立主鍵。然後我們可以查找引用它的外鍵。
select p.constraint_name
, p.constraint_type
, f.owner
, f.table_name
, f.constraint_name
from all_constraints p
left join all_constraints f
on (f.r_constraint_name = p.constraint_name)
where p.table_name = 'XYZ'
and p.constraint_type in ('P', 'U')
and f.constraint_type = 'R'
我做這個作爲一個OUTER JOIN所以它會返回一些即使沒有表參考上XYZ的關鍵。您的表可能會被其他模式中的表引用。這就是爲什麼我建議使用ALL_CONSTRAINTS而不是USER_CONSTRAINTS。
0
select fk.table_name from all_constraints fk , all_constraints pk
where
pk.table_name = 'XYZ'
and fk.constraint_type = 'R'
and fk.r_constraint_name = pk.constraint_name
0
看來,你可以查詢USER_CONSTRAINTS查看,像
select distinct Table_Name
from User_Constraints
where Constraint_Type = 'R' and
R_Constraint_Name in (
select Constraint_Name
from User_Constraints
where Constraint_Type = 'P' and
Table_Name = Upper('xyz')) -- <- Your table name
order by Table_Name -- <- may be redundant
0
爲SQL試試這個:
SELECT K.TABLE_NAME , K.COLUMN_NAME , K.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K ON C.TABLE_NAME = K.TABLE_NAME AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE C.CONSTRAINT_TYPE = 'FOREIGN KEY' /*FOR FOREIGN KEY U NEED TO REPLACE CONSTRAINT_TYPE WITH FOREIGN KEY*/ AND K.COLUMN_NAME IN (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS)
相關問題
- 1. 將外鍵從外鍵拉到表中
- 2. 插入到外鍵表中
- 3. MySQL表的外鍵
- 4. Mysql外鍵/表
- 5. 外鍵表A或B表
- 6. 從表到aspnet_Users的外鍵:ASP.NET
- 7. 添加到一個表的外鍵
- 8. 添加外鍵外鍵約束表
- 9. 編輯外鍵表
- 10. 子表和外鍵
- 11. 更新外鍵表
- 12. 加入表,外鍵
- 13. 排序外鍵表
- 14. 外鍵表更新
- 15. 帶外鍵的表的CRUD
- 16. 帶外鍵的更新表
- 17. 獲取表中的外鍵
- 18. mySQL - 多個表的外鍵?
- 19. myisam表替代的外鍵?
- 20. PDO創建表的外鍵
- 21. 多個表的外鍵
- 22. 與外鍵相同的表
- 23. 同一張表的外鍵
- 24. Yesod - 帶外鍵的表格
- 25. 外鍵指的多個表
- 26. 整個表的mysql外鍵
- 27. JS Knex:讓外鍵的表
- 28. 日誌表中的外鍵
- 29. 有多個表的外鍵
- 30. PostgreSQL的外鍵和子表
的OP明確指出他們正在使用Oracle。在這種情況下,[sql]是指Ansi標準語言,而不是MS SQL Server的簡稱。 – APC