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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-22 11:32:09465ブラウズ

How Do I Implement Auto-Incrementing Columns in PostgreSQL?

PostgreSQL での自動インクリメント列の実装

PostgreSQL で AUTO_INCREMENT を使用して主キーに自動的に番号を付けようとすると、エラーが発生する場合があります。次の SQL は、AUTO_INCREMENT を使用してテーブルを作成しようとする例を示しています:

<code class="language-sql">CREATE TABLE Staff   (
  ID        INTEGER NOT NULL AUTO_INCREMENT,
  Name      VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);</code>

ただし、エラーが返されます:

<code>ERROR: ERROR: syntax error at or near "AUTO_INCREMENT"
SQL state: 42601
Character: 63</code>

PostgreSQL のバージョンと自動インクリメント

このエラーは、AUTO_INCREMENT が PostgreSQL の自動インクリメントに有効な構文ではないために発生します。代わりに、PostgreSQL のバージョンに応じて異なるメカニズムが使用されます。

PostgreSQL 10 以降

PostgreSQL 10 以降の場合は、IDENTITY 列タイプを使用します。構文は次のとおりです:

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

PostgreSQL 9.6 以前

PostgreSQL 9.6 以前の場合は、シリアル データ型を使用します:

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

シリアル擬似データ型は、シーケンス オブジェクトを自動的に作成し、DEFAULT をシーケンスの次の値に設定します。

その他の注意事項

  • PostgreSQL で使いやすくするために、引用符で囲まれていない正当な小文字の識別子を使用してください。
  • システム値または INSERT コマンドでのユーザー入力をオーバーライドするには、必要に応じて OVERRIDING {SYSTEM|USER} VALUE を使用します。

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

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