awe*_*eis 1 oracle metadata foreign-keys
我试图从Oracle中提取有关外键的一些元数据.我使用"all_constraints"查找所有引用约束信息,使用"all_cons_columns"查找实际列.但是,我无法在外键中获取列的顺序.
下面是4个包含3列的示例表.其中3个表引用表"tab_d",但外键中列的顺序不同.此订单未反映在"all_cons_columns"视图中,那么是否有其他可用信息的位置?
create table tab_d (
col_a int,
col_b int,
col_c int,
constraint tab_d_pk primary key (col_a, col_b, col_c)
);
create table tab_e (
ref_col_a int,
ref_col_b int,
ref_col_c int,
constraint tab_e_fk foreign key (ref_col_b, ref_col_c, ref_col_a)
references tab_d(col_b, col_c, col_a)
);
create table tab_f (
ref_col_a int,
ref_col_b int,
ref_col_c int,
constraint tab_f_fk foreign key (ref_col_b, ref_col_c, ref_col_a)
references tab_d(col_c, col_a, col_b)
);
create table tab_g (
ref_col_a int,
ref_col_b int,
ref_col_c int,
constraint tab_g_fk foreign key (ref_col_c, ref_col_b, ref_col_a)
references tab_d(col_c, col_b, col_a)
);
Run Code Online (Sandbox Code Playgroud)
我从"all_cons_columns"获得的信息如下所示,例如我的表格"tab_g",其中我认为位置显示列顺序ref_col_c = 1,ref_col_b = 2和ref_col_a = 3它显示列在主键中的顺序.
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
TAB_F_FK TAB_F REF_COL_A 2
TAB_F_FK TAB_F REF_COL_B 3
TAB_F_FK TAB_F REF_COL_C 1
TAB_E_FK TAB_E REF_COL_A 1
TAB_E_FK TAB_E REF_COL_B 2
TAB_E_FK TAB_E REF_COL_C 3
TAB_G_FK TAB_G REF_COL_A 1
TAB_G_FK TAB_G REF_COL_B 2
TAB_G_FK TAB_G REF_COL_C 3
Run Code Online (Sandbox Code Playgroud)