索引也可以被用来强制列值的唯一性,或者是多个列组合值的唯一性。
CREATE UNIQUE INDEX name
ON table
(column
[, ...]);
当前,只有B-tree能够被声明为唯一。
当一个索引被声明为唯一时,索引中不允许多个表行具有相同的索引值。空值被视为不相同。一个多列唯一索引将会拒绝在所有索引列上具有相同组合值的表行。
PostgreSQL会自动为定义了一个唯一约束或主键的表创建一个唯一索引。该索引包含组成主键或唯一约束的所有列(可能是一个多列索引),它也是用于强制这些约束的机制。
注意
不需要手工在唯一列上创建索引,如果那样做也只是重复了自动创建的索引而已。