My initial idea has been not to use ON CONFLICT at all, but instead only UPDATE the words_reviews records (set "uid" or "author" to out_uid) for which NO EXISTS already such a record with PK (uid, author)... and then
I am afraid the logic is escaping me. If the record does not exist how can you UPDATE it?
here the table with reviews of users "uid" done by users "author":
CREATE TABLE words_reviews ( uid integer NOT NULL CHECK (uid <> author) REFERENCES words_users ON DELETE CASCADE, author integer NOT NULL REFERENCES words_users(uid) ON DELETE CASCADE, nice integer NOT NULL CHECK (nice = 0 OR nice = 1), review varchar(255), updated timestamptz NOT NULL, PRIMARY KEY(uid, author)
);
Since I am merging user ids (from several to one), I need to change the records in the above table too.
I need to update the PK by changing either "uid" or "author".
But this might give me conflicts, because there might be such a PK already...