Re: UPSERT
Florian Pflug <fgp@phlo.org>
From: "Florian G. Pflug" <fgp@phlo.org>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Jonathan Scher <js@oxado.com>, pgsql-hackers@postgresql.org
Date: 2007-03-02T14:49:00Z
Lists: pgsql-hackers
Andrew Dunstan wrote: > Jonathan Scher wrote: >> Hello, >> >> I'd like to work on TODO item: >> > Add REPLACE or UPSERT command that does UPDATE, or on failure, INSERT >> >> could you please tell me if I'm going in the right way? >> >> There are some different syntaxes possible, but MySQL has an >> interesting one here: >> http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html >> >> INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; >> This allow to make an insert, and if the key is already there to >> modify the value depending on the current one. May this could be generalized to a generic "<stmt> on <error> do <stmt>"? You could then write "update table set c=c+1 on not_found do insert into table (a,b,c) values (1,2,3)" Just an idea I just had... greetings, Florian Pflug