2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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 在為表定義唯一約束或主鍵時會自動建立一個唯一索引。該索引覆蓋構成主鍵或唯一約束的列(如果合適,則為多列索引),並且是強制執行約束的機制。

注意

無需手動建立唯一列上的索引;這樣做只會複製自動建立的索引。

提交更正

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