PostgreSQL 9.3.4 文档 | ||||
---|---|---|---|---|
Prev | Up | Chapter 11. 索引 | Next |
索引也可以被用来强制列值的唯一性,或者是多个列组合值的唯一性。
CREATE UNIQUE INDEX name ON table (column [, ...]);
当前,只有B-tree能够被声明为唯一。
当一个索引被声明为唯一时,索引中不允许多个表行具有相同的索引值。空值被视为不相同。一个多列唯一索引将会拒绝在所有索引列上具有相同组合值的表行。
PostgreSQL会自动为定义了一个唯一约束或主键的表创建一个唯一索引。该索引包含组成主键或唯一约束的所有列(可能是一个多列索引),它也是用于强制这些约束的机制。
Note: 为表增加一个唯一约束的首选方式是ALTER TABLE ... ADD CONSTRAINT。用索引来强制唯一约束可以被视作一种实现细节,因此这种索引不应该直接被访问。但是,我们应该注意不需要手工在唯一列上创建索引,如果那样做也只是重复了自动创建的索引而已。