PostgreSQL の自動インクリメントを行う方法

Postgresql No Zi Donginkurimentowo Xingu Fang Fa



PostgreSQL データベース内で一意の ID を確保する 1 つの方法は、自動インクリメント機能を使用することです。この機能を有効にすると、テーブル内の新しいエントリごとに一意の ID が生成されます。自動インクリメントでは、同じ一意の識別子を持つ新しい値を挿入しようとすると、エラーが発生します。自動インクリメントはさまざまなインスタンスで使用でき、一意の識別子の生成方法を定義できます。 PostgreSQL の自動インクリメントの詳細については、この投稿で詳しく説明されています。読む!

PostgreSQL 自動インクリメントの 2 つの方法

データベースを作成するときは、テーブル内に重複が存在しないように、各テーブルに主キーを設定する必要があります。主キーを作成する 1 つの方法は、INT データ型の自動インクリメント機能を使用することです。 PostgreSQL はすべてのエントリの主キー値を生成するため、開発者は主キーを手動で入力する煩わしさから解放されます。

PostgreSQL データベースで自動インクリメントを作成するために使用できるアプローチは 2 つあります。







方法 1: SERIAL 擬似型を使用する

データベース内の主キーの自動インクリメントを作成するデフォルトの方法は、SERIEL キーワードを使用することです。 SERIAL 疑似型を使用すると、値を生成するためのシーケンスが作成されます。シーケンス内の次の値が記録され、新しい値を挿入するたびに、その値に一意の ID が割り当てられます。



この自動インクリメントは INT データ型に割り当てられており、テーブルまたは列が削除されると削除されることに注意してください。



自動インクリメントを作成するための構文は次のとおりです。





作成する テーブル TABLE_NAME ( id SERIAL データ型 ;

この例では、自動インクリメントおよび主キーとして「user_id」を含む「details」という名前のテーブルを作成しましょう。他に 2 つの列も含まれています。



テーブルに値を挿入する場合は、他の列に対してのみ挿入し、値が自動的に生成される自動インクリメント列は省略します。次に、テーブルに 5 つのエントリを追加する例を示します。

SELECT ステートメントを使用してテーブル レコードをチェックする場合、「user_id」列に一意の ID が含まれていることに注意してください。この場合、これは 1 から始まる番号です。これが、SERIAL 疑似型を使用して PostgreSQL の自動インクリメントを行う方法です。

方法 2: シーケンスを作成する

SERIAL 疑似タイプを使用して自動インクリメント値を作成する場合、一意の ID の作成方法を制御することはできません。前の例では、一意の ID が 1 から始まることがわかりました。ただし、これらの値を制御したい場合、たとえば、どの時点で値の生成を開始するかを定義したい場合は、カスタム シーケンスを作成する必要があります。

PostgreSQL には SEQUENCE オプションがあり、自動インクリメントに使用する列名を指定し、列の開始値を定義できます。たとえば、値を 100 から開始したい場合は、次のカスタム シーケンスを作成します。

CREATE SEQUENCE 列名 開始値;

シーケンスを作成したら、テーブルを作成できます。作成したテーブルの「nextval(‘holder’)」など、シーケンスを作成したときと同じ列名を使用する必要があることに注意してください。そうすることで、PostgreSQL はシーケンスを参照して、列の一意の ID を生成するときに従うべき順序を認識します。

次のコマンドを実行してテーブルを作成します。

作成したテーブルの関連する列に値を挿入します。

「select」クエリを実行してテーブル エントリをリストすると、自動インクリメントを制御できていることがわかります。 「user_id」列の値は 100 から始まり、テーブルに挿入する他のエントリの後続の値を生成します。

これは、PostgreSQL の自動インクリメントを作成するもう 1 つの方法です。

結論

自動インクリメントを作成すると、テーブルに一意性を持たせるのに役立ちます。テーブルの主キーを定義する場合は、INT データ型の自動インクリメント機能を使用します。 PostgreSQL は値を自動的に生成し、テーブル内に重複が存在しないようにします。 PostgreSQL の自動インクリメントの作成方法を定義し、使用できる 2 つの方法の 2 つの例を提供しました。どちらの方法も、シナリオに応じて適用できます。ぜひ試してみてください!