0
我是oracle新手,我正在處理需要在兩個表之間獲取約束並將值作爲另一個輸入發送的表。查詢以獲得父表和子表之間的約束
Table 1
|_ Column1_pk
|_ Column2 (foreign key to Table 2)
Table 2
|_column2
所以我想取表1和列的主鍵,其中有2個表
我是oracle新手,我正在處理需要在兩個表之間獲取約束並將值作爲另一個輸入發送的表。查詢以獲得父表和子表之間的約束
Table 1
|_ Column1_pk
|_ Column2 (foreign key to Table 2)
Table 2
|_column2
所以我想取表1和列的主鍵,其中有2個表
您需要查詢字典視圖USER_CONSTRAINTS
和USER_CONS_COLUMNS
之間的關係。例如:
表DEPT
有一個主鍵,而表EMP
有一個指向DEPT
的外鍵。首先我們找到約束名稱,然後找到主鍵DEPT
的列。然後,使用約束名稱,我們找到約束名稱,然後找到EMP
的外鍵列。
select table_name, constraint_name, constraint_type
from user_constraints
where table_name = 'DEPT'
and constraint_type = 'P'
;
TABLE_NAME CONSTRAINT_NAME CONSTRAINT_TYPE
---------- --------------- ---------------
DEPT PK_DEPT P
select constraint_name, table_name, column_name, position
from user_cons_columns
where constraint_name = 'PK_DEPT'
;
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
--------------- ---------- ----------- --------
PK_DEPT DEPT DEPTNO 1
然後
select table_name, constraint_name, constraint_type
from user_constraints
where table_name = 'EMP'
and r_constraint_name = 'PK_DEPT'
;
TABLE_NAME CONSTRAINT_NAME CONSTRAINT_TYPE
---------- --------------- ---------------
EMP FK_DEPTNO R
select constraint_name, table_name, column_name, position
from user_cons_columns
where constraint_name = 'FK_DEPTNO'
;
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
--------------- ---------- ----------- --------
FK_DEPTNO EMP DEPTNO 1
這是一個MySQL的問題,一個Oracle問題,或SQL Server的問題嗎?你有三個標籤,但它們是完全不同的產品,對這個問題的答案完全不同。 – pmbAustin