Найти порядок столбцов во внешнем ключе - PullRequest
1 голос
/ 08 марта 2011

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

1 Ответ

5 голосов
/ 08 марта 2011

Порядок столбцов равен , отраженный в представлении ALL_CONS_COLUMNS - столбцом с именем POSITION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...