Oracle根據主鍵查詢外來鍵
需求:
假如以前建立了兩個有外來鍵關聯的表A和B:
create table A(id number(3) primary key, name varchar2(10));
create table B(id number(3), sex varchar2(1));
alter table B add constraint fk_id foreign key(id) references A(id);
過了一段時間後忘了當初把哪個表的哪個欄位設成A表id欄位的外來鍵,要求查出該外來鍵所對應的列名和表名。
解決方案:
(1)首先查詢A表的主鍵名稱:
select constraint_name from user_constraints where table_name='A' and constraint_type ='P';
因為建主鍵名時沒有指定具體的名稱,所以這裡得到的系統給A表分配的主鍵名稱為SYS_C0023469
(2)接著在上一步的基礎上查詢外來鍵對應的表名和列名:
select
table_name,constraint_name,constraint_type from user_constraints where r_constraint_name =
(select constraint_name from user_constraints where table_name='A' and constraint_type ='P');
這裡用到了r_constraint_name。假如表B中的某個外來鍵為表A的主鍵,則有B.r_constraint_name=A.constraint_name。
(3)知道了表名和外來鍵約束名後,就很容易從user_cons_columns中查詢列名:
select column_name from user_cons_columns where table_name='B';
或
select column_name from user_cons_columns where constraint_name='FK_ID';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29485627/viewspace-1982186/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL server根據表名查詢表主鍵SQLServer
- Oracle 外來鍵查詢sqlOracleSQL
- Oracle查詢資料總數-根據count(主鍵),在ssh專案中Oracle
- 根據關鍵字查詢車輛資訊
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- oracle查詢表資訊(索引,外來鍵,列等)Oracle索引
- Oracle查詢表的外來鍵引用關係Oracle
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- 關於外來鍵約束和對應主鍵資訊的查詢指令碼指令碼
- 查詢沒有索引的外來鍵索引
- 查詢一個表的外來鍵
- oracle中查詢、禁用、啟用、刪除表外來鍵Oracle
- SQL的主鍵和外來鍵約束SQL
- 新的主鍵和外來鍵的語法
- 父表修改與外來鍵的關係(主鍵DML與外來鍵的關係)
- 菜鳥學資料庫(四)——超鍵、候選鍵、主鍵、外來鍵資料庫
- 注意:Oracle中的聯合主鍵查詢問題(轉)Oracle
- 根據表查詢索引資訊索引
- 根據父表查詢子表
- 根據PID查詢 sqlSQL
- ORACLE查詢表之間的主外來鍵關係Oracle
- Laravel ORM 中,根據關聯查詢的欄位值,對主查詢排名LaravelORM
- 查詢外來鍵約束、子表欄位等資訊的SQLSQL
- Oracle主鍵Oracle
- oracle查詢沒有主鍵的表Oracle
- 外來鍵缺索引檢查指令碼索引指令碼
- hibernate複合主鍵查詢問題
- 微博根據手機號查詢
- indexedDB 內鍵與外來鍵Index
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- sqlserver外來鍵SQLServer
- 在已存在的表結構上新增主鍵、外來鍵、聯合主鍵、聯合索引的例子索引
- Oracle 查詢表與表之間的 主外來鍵關係Oracle
- 查詢使用者中哪些表沒主鍵
- oracle檢視當前使用者下所有外來鍵、主鍵、索引、sequence的建立語句Oracle索引
- linux根據字尾查詢文字Linux
- 根據欄位名查詢所有表
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫