PostgreSQLで、serial型が定義されているテーブルに対して、serial型のカラムを除いてINSERTを実行したら、エラーが発生した。
エラーの内容
ユニーク制約のカラムに同じ値を入れようとしたときのエラーが発生していた。
なぜエラー?
ユニーク制約はserial型のカラムにのみ設定されていて、serial型のカラムを除いてINSERTしていてエラーになるのは、意味がわからなかった。
原因判明
PostgreSQLは、serial型にするとシーケンスが作成されるが、次のINSERT時に使われる値を確認したら、既に使われている値になっていた。
以前INSERTしたときに、serial型のカラムも含めてINSERTしていたのか?
対処
INSERTするたびにエラーは発生するが、シーケンスの値は更新されるので、INSERT出来るようになるまで繰り返し実行した。
原因作ったのは自分なのかどうか、全然覚えてない。