他のバージョンの文書 16 | 15 | 14 | 13 | 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

7.4. 一意インデックス

列値の一意性や1つ以上の列を統合した値の一意性を保証する場合などにもインデックスを使用することができます。

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

現在、B-treeインデックスのみで一意インデックスを作成することができます。

一意インデックスが宣言された場合、インデックスと同じ値を持つ行は許されなくなります。但し、NULL値は同じ値とはみなされません。

PostgreSQLでは、テーブル作成時にユニーク制約、または主キーが宣言されると、自動的に一意インデックスをそれらの制約に該当する列(場合によってはマルチ列インデックス)に作成します。一意性制約を追加するために、一意なインデックスはテーブル作成後でもテーブルに追加することができます。

Note: テーブルに一意性制約を追加するためにインデックスを使用することは、直接アクセスされてはならない実装の詳細に係わるので、ユニーク制約を追加する場合は、ALTER TABLE ... ADD CONSTRAINT を使う方が望ましいと言えます。