主キー
PostgreSQL の主キーとは?
主キーは、各行を一意に識別する列または列の組です。PostgreSQL は一意の B-tree インデックスと NOT NULL によってこれを強制します。
主キー制約は、ある列または列のグループを、テーブルの行の識別子として指定します。その値は一意で、NULL であってはなりません。1 つのテーブルが持てる主キーは最大 1 つです。
主キーを追加すると、その列に一意の B-tree インデックスが自動的に作成され、列は NOT NULL になります。他のテーブルの外部キーは通常この主キーを参照し、多くのツールはすべてのテーブルに主キーがあることを前提としています。よく使われるのは、IDENTITY 列や、製品コードのような自然キーです。
例
この例では、sku をキーとするテーブルを作成し、重複するキーを ON CONFLICT DO NOTHING 付きで挿入して、エラーにせずスキップさせます。最後に、PostgreSQL がキー用に作成したインデックスを一覧表示します。
CREATE TABLE products (
sku text PRIMARY KEY,
name text NOT NULL
);
INSERT INTO products VALUES ('P-1', 'Lamp');
INSERT INTO products VALUES ('P-1', 'Desk') ON CONFLICT DO NOTHING;
SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'products';拡張機能なしの標準の PostgreSQL 16 または 17 で動くプレーンな SQL です。破棄してかまわない空のデータベースで実行してください。
出典
PostgreSQL 公式ドキュメント(英語)。