テーブルにいくつかの行を手動で追加し、ID(auto_increment)を手動で設定しました。これで、アプリを介してDBテーブルに新しい行を追加しようとすると、作成されたID値がすでに存在するというエラーが発生します。
次のID値を手動で設定するにはどうすればよいですか(たとえば、テーブルでIDを設定する必要があるため、PostgreSQLに次のIDを3から数えるように指示する方法)。
テーブルにいくつかの行を手動で追加し、ID(auto_increment)を手動で設定しました。これで、アプリを介してDBテーブルに新しい行を追加しようとすると、作成されたID値がすでに存在するというエラーが発生します。
次のID値を手動で設定するにはどうすればよいですか(たとえば、テーブルでIDを設定する必要があるため、PostgreSQLに次のIDを3から数えるように指示する方法)。
http://www.postgresql.org/docs/current/static/functions-sequence.html
select setval('sequence-name', <new-value>);
テーブル定義からシーケンス名を取得できます。
id | integer | not null default nextval('id_seq'::regclass)
この場合、シーケンスの名前は「id_seq」です。
編集(@Glennへの10倍):
SELECT setval('id_seq', max(id)) FROM table;
もっと簡単な方法があると思います:
ALTER SEQUENCE "seq_product_id" RESTART WITH 10