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>
このエラーは、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 で自動インクリメント列を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。