将表格列保留为空时,将其索引为唯一
问题描述:
如果表格列被定义为唯一,是否可以将表格列保留为空?将表格列保留为空时,将其索引为唯一
表架构
Column | Type | Modifiers | Description
-------------------+------------------------+---------------+-------------
id | integer | not null |
name | character varying(64) | |
指标
Indexes:
"clients_pkey" PRIMARY KEY, btree (id)
"clients_name_idx" UNIQUE, btree (name)
Has OIDs: yes
由于修改应用程序有时名称列必须是空的,这是可能的呢?
答
如果该列可以包含NULL
的值,那么这是好的,因为NULL
未包含在索引中。
请注意,某些数据库没有正确实施标准(某些版本的SQL Server只允许每个唯一约束有一个NULL
值,但我确定这是否仍然如此)。
答
使用NULL是更好的选择,但你也可以使用一个有条件的唯一索引:
CREATE UNIQUE INDEX unique_clients_name ON clients (name) WHERE name <> '';
,避免OID的,这是无用的和过时的。