PostgreSQL 创建唯一索引

唯一索引可以用于强制表字段值的唯一性,或者强制多个字段组合值的唯一性。目前 PostgreSQL 只支持 B-tree 索引定义为唯一索引。

1. PostgreSQL 创建唯一索引语法

CREATE UNIQUE INDEX name ON table (column [, ...]);

通过 create unique index 语法创建唯一索引。

2. 创建唯一索引示例

create table t(id int, name text);
create unique index uk_name on t(name);

插入 name 相同的记录,则会报错,如下:

postgres=# insert into t values (1,'abc');
INSERT 0 1
postgres=# insert into t values (2,'abc');
ERROR:  duplicate key value violates unique constraint "uk_name"
DETAIL:  Key (name)=(abc) already exists.

3. 查看唯一索引

通过 \d+ 命令查看表结构可以看到唯一索引的信息,如下:

postgres=# \d+ t
                                     Table "public.t"
 Column |  Type   | Collation | Nullable | Default | Storage  | Stats target | Description
--------+---------+-----------+----------+---------+----------+--------------+-------------
 id     | integer |           |          |         | plain    |              |
 name   | text    |           |          |         | extended |              |
Indexes:
    "uk_name" UNIQUE, btree (name)
Access method: heap

4. 删除唯一索引

通过 drop index 命令删除唯一索引,uk_name 为唯一索引的名称。

drop index uk_name;

文章评论

0条评论