さきほどテーブル hoge にデータを追加しようとしたら、プライマリーキーに重複がありますというエラーが出てシーケンシャル用のテーブルである hoge_seq を確認したら数値がおかしなことになってた。 hoge_seq の last_value は 140 なのに hoge の primary key の最大値は 201 となっていたのだ。これではデータの追加が行えない。
この hoge_seq は仕組みはよくわからないが通常のsql文で update を行おうとするとタイトルにある様に、"you cannot change sequence relation hoge_seq" とエラーを返す。この場合は以下のコマンドを実行すると last_value の値を変更できる。
SELECT setval(last_value, 202);
SELECT 文なのに値が変わるのがちょっと気持ち悪いんだけどこれで変更できる。ちなみに SELECT を抜かしてやると Syntax Error を返される。
参考
Sponsored Link
コメント