Re: UPDATE ... ON CONFLICT DO NOTHING

From: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: UPDATE ... ON CONFLICT DO NOTHING
Date: 2017-03-14 20:25:10
Message-ID: CAADeyWgoMhXeJwihy2XDne57a54eYewrmw5o9+gKpMcqjjSBqw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Adrian -

On Tue, Mar 14, 2017 at 7:18 PM, Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
wrote:

> On 03/14/2017 09:00 AM, Alexander Farber wrote:
>
>> 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...

Regards
Alex

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jeff Janes 2017-03-14 20:26:14 Re: Table not cleaning up drom dead tuples
Previous Message Stephen Frost 2017-03-14 20:16:05 Re: Postgres backup solution