Я пытаюсь извлечь некоторые метаданные из 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