PostgreSQL でテーブルを作成するときに、主キー列に AUTO_INCREMENT オプションを使用しようとすると、エラーが発生する場合があります。この記事では、この問題を詳しく掘り下げ、テーブル列の自動インクリメントに関する包括的なソリューションを提供します。
表示されたエラー メッセージは、AUTO_INCREMENT キーワードに関連する構文エラーを示しています。 PostgreSQL は AUTO_INCREMENT キーワードをサポートしていません。代わりに、さまざまな手法を使用して主キー値を自動的に生成します。
PostgreSQL 10 以降では、主キーを自動インクリメントする推奨方法は IDENTITY 列です。 IDENTITY 列は、行ごとに一意の値を自動的に生成する特別なタイプの列です。
IDENTITY 列を含むテーブルを作成するには:
CREATE TABLE staff ( staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY, staff text NOT NULL );
GENERATED ALWAYS 句により、INSERT ステートメントで値が明示的に指定された場合でも、列の値が自動的に生成されます。
PostgreSQL 9.6 以前では、シリアル擬似データ型を使用して主キーを自動インクリメントできます。シリアル列はバックグラウンドでシーケンス オブジェクトを作成し、列のデフォルト値をシーケンス内の次の値に自動的に設定します。
シリアル列を含むテーブルを作成するには:
CREATE TABLE staff ( staff_id serial PRIMARY KEY, staff text NOT NULL );
IDENTITY 列とシリアル列は両方とも値を自動的に生成しますが、INSERT ステートメントの OVERRIDING SYSTEM|USER VALUE 構文を使用してこれらの値をオーバーライドできます。
以上がPostgreSQL で自動インクリメント列を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。