Re: Why is unique constraint needed for upsert? (treat atomicity as optional)

From: John R Pierce <pierce(at)hogranch(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Why is unique constraint needed for upsert? (treat atomicity as optional)
Date: 2014-07-23 21:03:12
Message-ID: 53D02310.6080906@hogranch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 7/23/2014 1:45 PM, Seamus Abshere wrote:
>
> What if we treat atomicity as optional? You could have extremely
> readable syntax like:

atomicity is not and never will be optional in PostgreSQL.

>> -- no guarantees, no index required
>> UPSERT age = 5 INTO dogs WHERE name = 'Jerry';

and if there's several rows with name='Jerry', you'd want to update them
ALL ? if name isn't indexed, this will, as Tom suggests, require a FULL
table scan, and it still will have issues with concurrency (connection
scans table, finds nothing, starts to insert, user 2 scans table, finds
nothing, starts to insert, poof, now we have two records?!?). If name
*is* indexed and unique, this collision will cause a error at commit for
at least one of those connections.

--
john r pierce 37N 122W
somewhere on the middle of the left coast

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Seamus Abshere 2014-07-23 21:15:32 Re: Why is unique constraint needed for upsert? (treat atomicity as optional)
Previous Message Tom Lane 2014-07-23 20:54:57 Re: Why is unique constraint needed for upsert? (treat atomicity as optional)