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