我是oracle的新手,我正在处理表,我需要在两个表之间获取约束并将值作为另一个输入发送。
Table 1
|_ Column1_pk
|_ Column2 (foreign key to Table 2)
Table 2
|_column2
所以我想获取table1和column的主键,它们具有2个表之间的关系
答案 0 :(得分: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