2010-12-17 86 views
0

如果表格列被定義爲唯一,是否可以將表格列保留爲空?將表格列保留爲空時,將其索引爲唯一

表架構

 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 

由於修改應用程序有時名稱列必須是空的,這是可能的呢?

回答

2

如果該列可以包含NULL的值,那麼這是好的,因爲NULL未包含在索引中。

請注意,某些數據庫沒有正確實施標準(某些版本的SQL Server只允許每個唯一約束有一個NULL值,但我確定這是否仍然如此)。

0

使用NULL是更好的選擇,但你也可以使用一個有條件的唯一索引:

CREATE UNIQUE INDEX unique_clients_name ON clients (name) WHERE name <> ''; 

,避免OID的,這是無用的和過時的。