11.6. Уникальные индексы #
Индексы также могут обеспечивать уникальность значения в столбце или уникальность сочетания значений в нескольких столбцах.
CREATE UNIQUE INDEXимя
ONтаблица
(столбец
[, ...]) [ NULLS [ NOT ] DISTINCT ];
В настоящее время обеспечение уникальности поддерживают только индексы-B-деревья.
Если индекс создаётся как уникальный, в таблицу нельзя будет добавить несколько строк с одинаковыми значениями ключа индекса. По умолчанию значения NULL в уникальном столбце считаются не равными друг другу, так что в таком столбце может быть несколько значений NULL. Параметр NULLS NOT DISTINCT
изменяет это правило, так что значения NULL в индексе считаются равными друг другу. Составной уникальный индекс не принимает только те строки, в которых все индексируемые столбцы содержат одинаковые значения.
Когда для таблицы определяется ограничение уникальности или первичный ключ, Postgres Pro автоматически создаёт уникальный индекс по всем столбцам, составляющим это ограничение или первичный ключ (индекс может быть составным). Такой индекс и является механизмом, который обеспечивает выполнение ограничения.
Примечание
Для уникальных столбцов не нужно вручную создавать отдельные индексы — они просто продублируют индексы, созданные автоматически.