X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id 35A53D1D09E for ; Tue, 11 May 2004 17:23:41 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 20327-07 for ; Tue, 11 May 2004 17:23:22 -0300 (ADT) Received: from candle.pha.pa.us (candle.pha.pa.us [207.106.42.251]) by svr1.postgresql.org (Postfix) with ESMTP id 3A85CD1D21A for ; Tue, 11 May 2004 17:23:18 -0300 (ADT) Received: (from pgman@localhost) by candle.pha.pa.us (8.11.6/8.11.6) id i4BKNIx25097; Tue, 11 May 2004 16:23:18 -0400 (EDT) From: Bruce Momjian Message-Id: <200405112023.i4BKNIx25097@candle.pha.pa.us> Subject: Re: Adding MERGE to the TODO list (resend with subject) In-Reply-To: To: Bricklen Date: Tue, 11 May 2004 16:23:18 -0400 (EDT) Cc: pgsql-hackers@postgresql.org X-Mailer: ELM [version 2.4ME+ PL108 (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Virus-Scanned: by amavisd-new at postgresql.org X-Spam-Status: No, hits=0.0 tagged_above=0.0 required=5.0 tests= X-Spam-Level: X-Archive-Number: 200405/497 X-Sequence-Number: 53575 OK, DELETE added: * Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules, triggers?) --------------------------------------------------------------------------- Bricklen wrote: > Alvaro Herrera wrote: > > > > Oh, I see. Complex stuff ... I wonder how will it work with sequences > > -- if one insertion fails and we have to try again, there's a chance a > > sequence could be advanced more than once. Note the article skips the > > "signal-statement" symbol (is it present in SQL99? What does it do?) > > > > I also wonder if there will be a corresponding RULE implementation ... > > > > The full DB2 reference is at > > http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0010873.htm > > > > (signal-statement is something to raise an exception, apparently) > > > > (I wonder why they don't use BNF syntax anymore ...) > > > Just to add to this information, Oracle 9i and 10g have also implemented > the MERGE command. 9i offers an update/insert, whereas 10g adds a delete > option as well, which is rather handy. > 'Purpose', quoted from: > http://download-west.oracle.com/docs/cd/B13789_01/server.101/b10759/statements_9016.htm#sthref7014 > > (note, to view this link, you will need to sign up for a free OTN acct.) > > "Use the MERGE statement to select rows from one or more sources for > update or insertion into one or more tables. You can specify conditions > to determine whether to update or insert into the target tables. > > This statement is a convenient way to combine multiple operations. It > lets you avoid multiple INSERT, UPDATE, and DELETE DML statements. > > MERGE is a deterministic statement. That is, you cannot update the same > row of the target table multiple times in the same MERGE statement." > > Point being, I've found the delete option very useful too, rather than > having to do the same procedurally. > > > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073