支援的版本: 目前版本 (17) / 16 / 15 / 14 / 13
開發版本: devel
不再支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2

11.6. 唯一索引 #

索引也可以用來強制欄位值的唯一性,或者多個欄位組合值的唯一性。

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

目前,只有 B-tree 索引可以宣告為唯一索引。

當索引宣告為唯一索引時,不允許存在具有相等索引值的多個資料列。預設情況下,唯一欄位中的 null 值不被視為相等,因此允許在該欄位中存在多個 null 值。NULLS NOT DISTINCT 選項會修改此行為,並使索引將 null 值視為相等。多欄位唯一索引只會拒絕在多個資料列中所有索引欄位都相等的情況。

當為資料表定義唯一約束或主鍵時,PostgreSQL 會自動建立唯一索引。該索引涵蓋組成主鍵或唯一約束的欄位(如果適用,則為多欄位索引),並且是強制執行約束的機制。

注意

不需要在唯一欄位上手動建立索引;這樣做只會重複自動建立的索引。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。