Как создать два индекса для одного столбца, который является первичным и внешним ключом? - PullRequest
0 голосов
/ 31 марта 2020

Из того, что мне сказали и прочитали в Интернете, мне нужно создать индекс для внешнего ключа, даже если этот точный столбец уже имеет индекс в качестве первичного ключа. Но как это сделать? Если я просто использую это

create index document_fk_i on document(id);

Разве это не создаст второй индекс, идентичный первому? (первый был создан автоматически Oracle)

1 Ответ

0 голосов
/ 31 марта 2020

Вы не можете индексировать один и тот же столбец дважды. Если для столбца document.id имеется индекс, поскольку он является первичным ключом, то вы не создадите (и не сможете) создать другой индекс, который будет использоваться для роли этого столбца «ограничение внешнего ключа».

Основная таблица:

SQL> create table test_a (id number primary key);

Table created.

Таблица сведений: ID является первичным ключом, а Oracle создаст индекс:

SQL> create table test_b (id number primary key);

Table created.

Создайте ограничение внешнего ключа из детализации в мастер-таблицу :

SQL> alter table test_b add constraint fk_ba foreign key (id)
  2  references test_a (id);

Table altered.

Попробуйте создать дополнительный индекс для столбца ID сведений:

SQL> create index idxb on test_b (id);
create index idxb on test_b (id)
                             *
ERROR at line 1:
ORA-01408: such column list already indexed


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