シーケンスの現在値を設定
シーケンス(sequence)の現在値を設定するにはsetval()を実行します
select setval('シーケンス名', 設定値);
シーケンスより次の値を取り出すにはnextval()を利用しますが、以下のようにシーケンスを 1でリセットするとnextval()で2が返ってきます。
# シーケンスを初期化 select setval('シーケンス名', 1); # シーケンスより値を取得 select nextval(シーケンス名'); 2 ← "2"が返ってくる
“1”から始めたいので setval() で “0” にするとエラーとなり設定できません。
select setval('シーケンス名', 0); setval: value 0 is out of bounds for sequence "シーケンス名"
どうしましょう
シーケンスを1から始まるように設定する
1から始まるようにリセットするには、setval()の3つめの引数に`false`を指定します
select setval('シーケンス名', 1, false);
これにより、nextval()で`1`が返ってきます
# シーケンスを初期化 select setval('シーケンス名', 1, false); # シーケンスより値を取得 select nextval(シーケンス名'); 1 ← "1"が返ってくる