シーケンスの値の変更

シーケンス値の変更

シーケンスの値を変える機会があったのでメモ。

たとえば、今まではtest_seqというシーケンスに10をセットしたい場合は以下のようにしていた。

SELECT setval('test_seq', 10);

でもこれだと、次に以下のようにnextval()を使ったとき、

SELECT nextval('test_seq');

11を返す。
  だから例えば、

SELECT settval('test_seq', 1);
SELECT nextval('test_seq');

とすると、本当は1が欲しいのに2が返ってくる。これが不便だなあと思っていた。
  でも実は探せばそういう方法もあった。

ALTER SEQUENCE test_seq RESET WITH 1;
SELECT nextval('test_seq');

これは1を返してくれる。
  マメ知識でした。