13

テーブルにいくつかの行を手動で追加し、ID(auto_increment)を手動で設定しました。これで、アプリを介してDBテーブルに新しい行を追加しようとすると、作成されたID値がすでに存在するというエラーが発生します。

次のID値を手動で設定するにはどうすればよいですか(たとえば、テーブルでIDを設定する必要があるため、PostgreSQLに次のIDを3から数えるように指示する方法)。

4

2 に答える 2

30

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;
于 2012-04-11T22:19:27.457 に答える
11

もっと簡単な方法があると思います:

ALTER SEQUENCE "seq_product_id"  RESTART WITH 10
于 2017-01-08T00:24:34.127 に答える