]> granicus.if.org Git - postgresql/commitdiff
Add an example of WITH (UPDATE RETURNING) INSERT to the INSERT ref page.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Apr 2011 14:54:03 +0000 (10:54 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Apr 2011 14:54:03 +0000 (10:54 -0400)
Per a discussion with Gavin Flower.  This barely scratches the surface
of potential WITH (something RETURNING) use cases, of course, but it's
one of the simplest compelling examples I can think of.

doc/src/sgml/ref/insert.sgml

index 629cc7ea558426781314b3b25b7dad8b84659bb1..a5c0d5a0a68b0158da8bb5fe0ef9df17570b728f 100644 (file)
@@ -298,6 +298,20 @@ INSERT INTO tictactoe (game, board)
 <programlisting>
 INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
    RETURNING did;
+</programlisting>
+  </para>
+
+  <para>
+   Increment the sales count of the salesperson who manages the
+   account for Acme Corporation, and record the whole updated row
+   along with current time in a log table:
+<programlisting>
+WITH upd AS (
+  UPDATE employees SET sales_count = sales_count + 1 WHERE id =
+    (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation')
+    RETURNING *
+)
+INSERT INTO employees_log SELECT *, current_timestamp FROM upd;
 </programlisting>
   </para>
  </refsect1>