ホームページ >データベース >mysql チュートリアル >PostgreSQL で自動インクリメント列を実装するにはどうすればよいですか?

PostgreSQL で自動インクリメント列を実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-22 11:27:081038ブラウズ

How to Implement Auto-Incrementing Columns in PostgreSQL?

PostgreSQL の自動インクリメントカラムの実装方法の詳細な説明

PostgreSQL でテーブルを作成するときに、主キー列に AUTO_INCREMENT オプションを使用しようとすると、エラーが発生する場合があります。この記事では、この問題を詳しく掘り下げ、テーブル列の自動インクリメントに関する包括的なソリューションを提供します。

AUTO_INCREMENT 構文エラー

表示されたエラー メッセージは、AUTO_INCREMENT キーワードに関連する構文エラーを示しています。 PostgreSQL は AUTO_INCREMENT キーワードをサポートしていません。代わりに、さまざまな手法を使用して主キー値を自動的に生成します。

PostgreSQL 10 以降: IDENTITY 列

PostgreSQL 10 以降では、主キーを自動インクリメントする推奨方法は IDENTITY 列です。 IDENTITY 列は、行ごとに一意の値を自動的に生成する特別なタイプの列です。

IDENTITY 列を含むテーブルを作成するには:

<code class="language-sql">CREATE TABLE staff (
  staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  staff text NOT NULL
);</code>

GENERATED ALWAYS 句により、INSERT ステートメントで値が明示的に指定された場合でも、列の値が自動的に生成されます。

PostgreSQL 9.6 以前: シリアル列

PostgreSQL 9.6 以前では、シリアル擬似データ型を使用して主キーを自動インクリメントできます。シリアル列はバックグラウンドでシーケンス オブジェクトを作成し、列のデフォルト値をシーケンス内の次の値に自動的に設定します。

シリアル列を含むテーブルを作成するには:

<code class="language-sql">CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff text NOT NULL
);</code>

デフォルト値を上書きします

IDENTITY 列とシリアル列は両方とも値を自動的に生成しますが、INSERT ステートメントの OVERRIDING SYSTEM|USER VALUE 構文を使用してこれらの値をオーバーライドできます。

追加メモ

  • PostgreSQL 10 以降では、シリアル列の代わりに IDENTITY 列を使用することをお勧めします。
  • PostgreSQL では、データベース管理を簡素化するために、正当な小文字の引用符で囲まれていない識別子を優先します。

以上がPostgreSQL で自動インクリメント列を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。