ホームページ >データベース >mysql チュートリアル >PostgreSQL で AUTO_INCREMENT が機能しないのはなぜですか? ID の自動インクリメントを実現するにはどうすればよいですか?
PostgreSQL は、MySQL などの他のデータベース システムで使用される AUTO_INCREMENT
キーワードをサポートしません。 これを使用しようとすると、構文エラーが発生します。 このガイドでは、PostgreSQL で主キーの自動インクリメントを実現する方法について説明します。
PostgreSQL 10 以降のバージョンで推奨されるアプローチは、IDENTITY
列を利用することです。 SERIAL
列とは異なり、IDENTITY
列では GENERATED BY DEFAULT
および GENERATED ALWAYS
オプションを使用することでより柔軟な機能が提供されます。
<code class="language-sql">CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );</code>
<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
古い PostgreSQL バージョン (9.6 以下) の場合、SERIAL
擬似型は同様の自動インクリメント機能を提供します。
<code class="language-sql">CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );</code>
SERIAL
は、関連付けられたシーケンスを自動的に作成および管理し、staff_id
列の一意の増加値を確保します。
挿入された値をきめ細かく制御するには、システムのデフォルト値やユーザー指定の値をオーバーライドする場合でも、OVERRIDING {SYSTEM|USER} VALUE
ステートメントで INSERT
を使用します。 これにより、単純な自動インクリメントを超えた高度な制御が可能になります。
以上がPostgreSQL で AUTO_INCREMENT が機能しないのはなぜですか? ID の自動インクリメントを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。