Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
Peter Geoghegan <pg@heroku.com>
From: Peter Geoghegan <pg@heroku.com>
To: Andres Freund <andres@2ndquadrant.com>
Cc: Heikki Linnakangas <hlinnakangas@vmware.com>,
Simon Riggs <simon@2ndquadrant.com>,
Pg Hackers <pgsql-hackers@postgresql.org>,
Craig Ringer <craig@2ndquadrant.com>
Date: 2014-09-29T18:15:31Z
Lists: pgsql-hackers
On Mon, Sep 29, 2014 at 12:02 AM, Andres Freund <andres@2ndquadrant.com> wrote: > On 2014-09-29 09:51:45 +0300, Heikki Linnakangas wrote: >> That said, it would be handy if the syntax was closer to MERGE. Aside from >> the concurrency issues, it does the same thing, right? So how about making >> the syntax identical to MERGE, except for swapping the MERGE keyword with >> e.g. UPSERT? > > I don't think that's a good idea. What most people are missing is an > *easy* way to do upsert, that's similar to the normal INSERT. Not > something with a pretty different syntax. That's why INSERT OR REPLACE > and stuff like that was well adopted. Agreed. MERGE isn't the same other than the concurrency concerns, in any case. It is driven by a join, which is very flexible, but also has problems with concurrency (leaving aside the fact that in practice it doesn't tend to work out well when it isn't an equi-join). UPSERT *has* to be driven by something like a would-be unique violation, not an outer join matching or not matching. -- Peter Geoghegan
Commits
-
Change the way we mark tuples as frozen.
- 37484ad2aace 9.4.0 cited
-
Add documentation for data-modifying statements in WITH clauses.
- 0ef0b3020402 9.1.0 cited