From: | Marti Raudsepp <marti(at)juffo(dot)org> |
---|---|
To: | Peter Geoghegan <pg(at)heroku(dot)com> |
Cc: | Simon Riggs <simon(at)2ndquadrant(dot)com>, Bruce Momjian <bruce(at)momjian(dot)us>, Josh Berkus <josh(at)agliodbs(dot)com>, Kevin Grittner <kgrittn(at)ymail(dot)com>, Andres Freund <andres(at)2ndquadrant(dot)com>, Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Craig Ringer <craig(at)2ndquadrant(dot)com> |
Subject: | Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} |
Date: | 2014-10-09 08:33:04 |
Message-ID: | CABRT9RBfS9mY3xiGVWYFfTrA0hL=kgU8na=wSAFBvs0X6-hovQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, Oct 9, 2014 at 11:11 AM, Peter Geoghegan <pg(at)heroku(dot)com> wrote:
> On Thu, Oct 9, 2014 at 12:38 AM, Simon Riggs <simon(at)2ndquadrant(dot)com> wrote:
>> Do not use CONFLICTING() which looks like it is a function.
>
> So is ROW(). Or COALESCE().
ROW and COALESCE behave almost like functions: they operate on any
expression or value you pass to them.
db=# select coalesce('bar');
coalesce
----------
bar
Not so with CONFLICTING(), it only accepts a column name -- not a
value -- and has knowledge of the surrounding statement that ordinary
function-like constructs don't.
db=# INSERT into evt_type (name) values ('foo') on conflict UPDATE set
name=conflicting('bar');
ERROR: syntax error at or near "'bar'"
LINE 1: ...lues ('foo') on conflict UPDATE set name=conflicting('bar');
> If you don't have a word that you think would more clearly indicate
> the intent of the expression, I'm happy to hear suggestions from
> others.
I also like NEW due to similarity with triggers, but I see your
concern about it not actually being "new".
Regards,
Marti
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2014-10-09 08:41:59 | Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} |
Previous Message | Peter Geoghegan | 2014-10-09 08:11:18 | Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} |