From: | Andreas Terrius <gotenwinz99(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>, Kim Rose Carlsen <krc(at)hiper(dot)dk>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Partial update on an postgres upsert violates constraint |
Date: | 2016-11-21 10:32:21 |
Message-ID: | CA+gNo8sPN5e161zcQ3jhz_t-YC2ghmYLRxHkYuW9Z0F1qo4Y8g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Is there any way to check whether the row already exists before checking
constraints ? I still want it to fail if it turns out to be a new row
(which would violate the not null constraint), but updates the row if it
already exists.
Since if that is not possible, I would need to do a query to determine
whether the row exists in the database which kinda eliminates the use of
upsert. (in this case, partial upsert).
On Sun, Nov 20, 2016 at 3:57 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> writes:
> > ... So looks like constraints are checked before you get to the ON
> CONFLICT section.
>
> Right. ON CONFLICT is a means for dealing with duplicate-key errors in
> the specified (or inferred) unique index. It is *not* an all-purpose
> error catcher. In the case at hand, the given INSERT request fails due
> to not-null constraints that are unrelated to what the ON CONFLICT clause
> tests for.
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | azhwkd | 2016-11-21 12:57:44 | query locks up when run concurrently |
Previous Message | John R Pierce | 2016-11-21 07:10:28 | Re: pg_basebackup on slave running for a long time |