Учитывая таблицу с двумя уникальными индексами, как показано ниже, как определить, какой уникальный индекс соответствует PRIMARY KEY, в отличие от других индексов UNIQUE в этой таблице?Как определить, какой UNIQUE-индекс применяет PRIMARY KEY в Oracle
Пользователь user_indexes и user_ind_columns, похоже, несут эту информацию. Спасибо, --DD
PS: За исключением явного указания индексов и использования соглашения об именах, конечно.
SQL> create table tt (id number not null primary key, name varchar2(64 char) not null unique, info varchar2(4000));
SQL> create index tt_idx on tt(info);
SQL> select INDEX_NAME, INDEX_TYPE, UNIQUENESS from user_indexes where TABLE_NAME='TT';
INDEX_NAME INDEX_TYPE UNIQUENES
-------------------- --------------------------- ---------
SYS_C0029541 NORMAL UNIQUE
SYS_C0029542 NORMAL UNIQUE
TT_IDX NORMAL NONUNIQUE
SQL> select * from user_ind_columns where TABLE_NAME='TT';
INDEX_NAME TABLE_NAME COLUMN_NAME COLUMN_POSITION COLUMN_LENGTH CHAR_LENGTH DESC
-------------------- -------------------- ------------ --------------- ------------- ----------- ----
SYS_C0029541 TT ID 1 22 0 ASC
SYS_C0029542 TT NAME 1 256 64 ASC
TT_IDX TT INFO 1 4000 4000 ASC
Update:
Вот результат выполнения запроса Флорин, который ясно показывает, какой индекс усиливает P RIMARY КЛЮЧ:
SQL> select constraint_name, constraint_type, index_name from user_constraints where table_name='TT';
CONSTRAINT_NAME C INDEX_NAME
------------------------------ - --------------------
SYS_C0029539 C
SYS_C0029540 C
SYS_C0029541 P SYS_C0029541
SYS_C0029542 U SYS_C0029542
Спасибо. --DD – ddevienne