Tech Blog

データ移行時、PostgreSQLでシーケンス(sequence)を合わせる方法

2020-04-14

PostgreSQLでデータをCSVインポートを行う際、id列のデータ型にserial型の場合、シーケンスについても考慮する必要があります。

データを移行するだけたと、シーケンス番号が進まず、以下のようなエラーがでます。

Unique violation: 7 ERROR: duplicate key value violates unique constraint

対応方法

idカラムにserial型を設定している場合は、データのインポート後に以下のコマンドを実行しましょう。

例えば、categoryテーブルのserial型にcategory_idのシーケンスIDがcategory_category_id_seqの場合は以下でOKです。

SELECT setval('category_category_id_seq',(SELECT max(category_id) FROM category));

SELECT max(category_id) FROM dtb_customer;でレコード数を取得し、シーケンス番号をsetval()で進めます。