> You can create a procedure to do that, but MERGE would work better.
>
> ISTM that would require writing some new code that was a mix of
> heap_update and heap_insert logic for the low level stuff would be
> required. The existing heap_update code is most similar, since the logic
> is roughly
>
> UPDATE WHERE.... (locate row)
> IF FOUND THEN
> INSERT (new row version)
>
> though with various changes to row visibility stuff.
>
> One might aim to do this in two stages:
> 1. initially support a single row upsert such as MySQL's REPLACE command
> 2. a full implementation of MERGE that used set logic as per the spec
>
> ...
The main issue is dealing with merging into unique index race conditions.
Chris