在外键中查找列的顺序

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)

Ton*_*ews 5

列的顺序反映在ALL_CONS_COLUMNS视图-由列称为POSITION.