Doc: clarify NULLS NOT DISTINCT use in unique indexes

indexes-unique.html mentioned nothing about the availability of NULLS NOT
DISTINCT to modify the NULLs-are-not-equal behavior of unique indexes.
Add this to the synopsis and clarify what it does regarding NULLs.

Author: David Gilman, David Rowley
Reviewed-by: Corey Huinker
Discussion: https://postgr.es/m/CALBH9DDr3NLqzWop1z5uZE-M5G_GYUuAeHFHQeyzFbNd8W0d=Q@mail.gmail.com
Backpatch-through: 15, where NULLS NOT DISTINCT was added
This commit is contained in:
David Rowley 2023-04-20 23:51:38 +12:00
parent c1cc4e688b
commit 0d0aeb04c1
1 changed files with 6 additions and 4 deletions

View File

@ -664,16 +664,18 @@ CREATE INDEX test3_desc_index ON test3 (id DESC NULLS LAST);
Indexes can also be used to enforce uniqueness of a column's value, Indexes can also be used to enforce uniqueness of a column's value,
or the uniqueness of the combined values of more than one column. or the uniqueness of the combined values of more than one column.
<synopsis> <synopsis>
CREATE UNIQUE INDEX <replaceable>name</replaceable> ON <replaceable>table</replaceable> (<replaceable>column</replaceable> <optional>, ...</optional>); CREATE UNIQUE INDEX <replaceable>name</replaceable> ON <replaceable>table</replaceable> (<replaceable>column</replaceable> <optional>, ...</optional>) <optional> NULLS <optional> NOT </optional> DISTINCT </optional>;
</synopsis> </synopsis>
Currently, only B-tree indexes can be declared unique. Currently, only B-tree indexes can be declared unique.
</para> </para>
<para> <para>
When an index is declared unique, multiple table rows with equal When an index is declared unique, multiple table rows with equal
indexed values are not allowed. Null values are not considered indexed values are not allowed. By default, null values in a unique column
equal. A multicolumn unique index will only reject cases where all are not considered equal, allowing multiple nulls in the column. The
indexed columns are equal in multiple rows. <literal>NULLS NOT DISTINCT</literal> option modifies this and causes the
index to treat nulls as equal. A multicolumn unique index will only reject
cases where all indexed columns are equal in multiple rows.
</para> </para>
<para> <para>