При первоначальном создании и разрешении в таблице ограничений primary key и unique Oracle автоматически создает индекс на столбцах, которые составляют первичный или уникальный ключ. В этом состоит определение и проверка уникальности первичного и других вторичных ключей таблицы. Появление индексов после создания ограничения внешне себя не проявляет.
В следующем коде показано, как добавить ограничение primary KEY и проверить системные таблицы, чтобы убедиться в наличии индекса.
SQL> ALTER TABLE delegates ADD CONSTRAINT pk_delegates PRIMARY KEY (d_delegate_id);
Table altered.
SQL> SELECT index name FROM user_ indexes where table name = 'DELEGATES';
INDEX NAME.
PK_DELEGATES.
SQL>
В этом примере индексу присвоено то же имя, что и ограничению.
ПРИМЕЧАНИЕ.
При отмене ограничений PRIMARY key или UNIQUE индекс автоматически уничтожается.
Если на столбцах, которые должны быть столбцами первичного ключа или уникального ключа, индекс уже существует, используется существующий индекс.
Индекс создается при добавлении или разрешении на таблице ограничения primary key или unique. При отмене ограничения PRIMARY KEY или UNIQUE индекс уничтожается.
В следующем примере кода показано, как ограничение primary KEY было отменено, затем вновь разрешено, а индекс был уничтожен и вновь автоматически создан.
SQL> ALTER TABLE delegates DISABLE CONSTRAINT pk_delegates ;
Table altered.
SQL> SELECT index_name FROM user_indexes WHERE table_naine = DELEGATES'; no rows selected.
SQL> ALTER TABLE delegates ENABLE CONSTRAINT pk_delegates;
Table altered.
SQL> SELECT index_name FROM userjndexes WHERE table_name = DELEGATES';
INDEX NAME PK_ DELEGATES.
SQL>
Индекс уничтожается при удалении ограничения из таблицы.