索引也可以用于强制列值的唯一性,或者多个列组合值的唯一性。

1
CREATE UNIQUE INDEX name ON table (column [, ...]) [ NULLS [ NOT ] DISTINCT ];

目前,只有 B-tree 索引可以声明为唯一

当索引被声明为唯一时,不允许表中有多个行具有相同的索引值。默认情况下唯一列中的空值不被视为相等,因此允许列中存在多个空值。NULLS NOT DISTINCT 选项修改了这一点,并使索引将空值视为相等。一个多列唯一索引只会拒绝所有索引列在多个行中都相等的情况。

当为表定义唯一约束或主键时,PostgreSQL 会自动创建一个唯一索引。该索引覆盖组成主键或唯一约束的列(如果适用,是一个多列索引),并且是强制执行该约束的机制。

相关链接

PostgreSQL: Documentation: 16: 11.6. Unique Indexes

OB tags

#PostgreSQL