PostgreSQLのようなリレーショナルデータベースの場合、開発者の間では罪と見なされる可能性があります。 すべてのテーブルに主キーを含める。したがって、すべてのテーブルにその非常に重要な主キー列を追加するために最大限の努力をすることが重要です。ありがたいことに、Postgresはこのタスクを実行するための2つの方法を提供します。
Postgresで主キーを追加するための最も簡単で一般的な手法は、SERIAL
を使用することです。 またはBIGSERIAL
CREATING
の場合のデータ型 新しいテーブル。公式ドキュメントに示されているように、SERIAL
は真のデータ型ではありませんが、指定された列に対して自動インクリメントされた一意の識別子を作成するようにPostgresに指示する単なる省略表記です。
以下に、簡単なbooks
を作成します。 適切なSERIAL
を含むテーブル 主キーのデータ型。
CREATE TABLE books (
id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100) NULL
);
id
を設定するだけです SERIAL
としての列 PRIMARY KEY
を使用 添付されているPostgresは、すべての複雑な舞台裏の作業を処理し、id
を自動的にインクリメントします INSERT
ごとに一意の主キー値を持つ列 。
まれに、SERIAL
に組み込まれている標準のインクリメンタルな性質 およびBIGSERIAL
データ型がニーズに合わない場合があります。このような場合、カスタムのSEQUENCE
を作成することで、列に対して同じ自動インクリメントされた主キー機能を実行できます。 、古いバージョンのOracleで使用されていた方法と同様です。
おそらく、私たちは特に偶数が好きですが、100未満のものには強い嫌悪感を持っているので、挿入ごとに100から始めて主キーを2ずつ増やすだけにします。これは、カスタムのSEQUENCE
を使用して実行できます。 そのように:
CREATE SEQUENCE books_sequence
start 2
increment 2;
ここで、INSERT
books
への新しいレコード テーブルでは、nextval('books_sequence')
を使用してシーケンスの次の値を評価する必要があります それをid
として使用します 。
INSERT INTO books
(id, title, primary_author)
VALUES
(nextval('books_sequence'), 'The Hobbit', 'Tolkien');
SEQUENCES
minvalue
などのオプションを使用して、必要に応じてさらにスパイスを加えることができます およびmaxvalue
もちろん、極値を示し、CYCLE
、これにより、シーケンスがmaxvalue
に達すると、シーケンスを「ループアラウンド」できます。 、start
に戻ります 価値があり、再び登り始めます。はるかに多くの情報が公式ドキュメントにあります。