用語集のすべての用語

主キー

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 公式ドキュメント(英語)。

関連用語