我试图从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)
);
我从“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
答案 0 :(得分:5)
列的顺序反映在ALL_CONS_COLUMNS视图中 - 名为POSITION的列。