PostgreSQL の自動インクリメント シーケンスのリセット
PostgreSQL は MySQL のように AUTO_INCREMENT
を使用しません。代わりに、シーケンスを使用して自動インクリメント値を管理します。 シーケンスの開始値をリセットするには、テーブルの自動インクリメント列に関連付けられたシーケンス名を識別する必要があります。
ALTER TABLE product AUTO_INCREMENT = 1453
を使用しようとすると、PostgreSQL がこの構文を認識しないため失敗します。 「リレーション 'product' が存在しません」というエラーがよく発生します。
シーケンス名は通常、${table_name}_${column_name}_seq
のパターンに従います。 「Id」列を持つ「product」という名前のテーブルの場合、シーケンスは「product_id_seq」になります。
シーケンスを 1453 から開始するようにリセットする正しいコマンドは次のとおりです。
<code class="language-sql">ALTER SEQUENCE product_id_seq RESTART WITH 1453;</code>
正しいシーケンス名を見つけるには、d
コマンドライン ツールの psql
コマンドを使用します。 たとえば、d product
は、自動インクリメント列 (デフォルトの制約経由) で使用されるシーケンス名を含むテーブル定義を表示します。 あるいは、SELECT pg_catalog.pg_get_serial_sequence('product', 'id');
のようなクエリを使用してシーケンス名を直接取得することもできます。
以上がPostgres の自動インクリメント カウンターをリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。