PostgreSQLで一意制約が設定されたカラムを一括UPDATEした際に、一意制約違反になったことありませんか? 今回、遅延制約という機能を使い、更新を実現する方法を紹介します。 例えば以下のようなテーブルとテストデータを用意し、一括更新してみましょう。 -- TABLE DEFINITION CREATE TABLE posts( id integer NOT NULL, CONSTRAINT posts_pk PRIMARY KEY (id) ); -- TEST DATA INSERT INTO posts VALUES(1); INSERT INTO posts VALUES(2); INSERT INTO posts VALUES(3); -- UPDATE UPDATE posts SET id = id + 1;