PostgreSQL 9.5 Does UPSERT Right (thenewstack.io)
joabj writes: For years, PostgreSQL users would ask when their favorite open source database system would get the UPSERT operator, which can either insert an entry or update it if a previous version already existed. Other RDMS have long offered this feature. Bruce Momjian, one of the chief contributors to PostgreSQL, admits to being embarrassed that it wasn't supported. Well, PostgreSQL 9.5, now generally available, finally offers a version of UPSERT and users may be glad the dev team took their time with it. Implementations of UPSERT on other database systems were "handled very badly," sometimes leading to unexpected error messages Momjian said. Turns out it is very difficult to implement on multi-user systems. "What is nice about our implementation is that it never generates an unexpected error. You can have multiple people doing this, and there is very little performance impact," Momjian said. Because it can work on multiple tables at once, it can even be used to merge one table into another.
Already check, then insert. Not rewriting code, and will use what I've got.
Roy Rodgers Is Riding To-Nite!
Finally. That's all.
Nice.
Nice.
Nice.
Nice.
Nice.
It has been out for a week, kinda early to pat yourself on the back
upserted, this morning.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
âoeOther RDMS have long offered this feature. Bruce Momjian, one of the chief contributors to PostgreSQL, admits to being embarrassed that it wasn't supported.â
It was even in the summary, let alone the article. No pleasing some people I guess.
Sounds too much like "Up Skirt". Somebody's gonna sue.
Table-ized A.I.
This is great. I've been using PosgreSQL for a while now. It's one of those pieces of software that just does what it's told and doesn't let you down. While I'm saying this there are credible rumours to the effect that the Oracle merge operation is broken. Read the comments to the most upvoted answer at this stack exchange question. The final comment is: :( – Randy Magruder Aug 27 '15 at 16:05
Not reliably. I ended up with retry loops in the client code.
This makes me think that Bruce Momijan may have been thinking about Oracle's implementation of merge when he said that other implementations were handled very badly.
Tell you what I'm really surprised David Bowie's death isn't headline news on Slashdot.. seeing as they now report anything for some attention whoring..
What would be the equivalent long-hand in "traditional" SQL?
Table-ized A.I.
That sounds like the "save with replace" bug on the Commodore 1541 disk drive 35 years ago. Plus ca change, eh?
Great, now all they have to do is fix the transaction isolation model and we can finally use the thing!
Oracle has included the 'merge' command for several iterations now, which does the same thing. It is a rich command - those interested can check the documentation at https://docs.oracle.com/database/121/SQLRF/statements_9016.htm#SQLRF01606