OSDN Git Service

Included is an example of using savepoints in a non-trivial example.
authorBruce Momjian <bruce@momjian.us>
Sun, 8 Aug 2004 01:48:31 +0000 (01:48 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 8 Aug 2004 01:48:31 +0000 (01:48 +0000)
Giving examples in the SQL command reference is hard because we don't
have conditionals at the SQL level.

Gavin Sherry

doc/src/sgml/ref/begin.sgml
doc/src/sgml/ref/update.sgml

index d40cb41..bf1195f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/begin.sgml,v 1.31 2004/08/01 17:32:13 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/begin.sgml,v 1.32 2004/08/08 01:48:31 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -100,6 +100,9 @@ BEGIN [ WORK | TRANSACTION ]
   <para>
    Issuing <command>BEGIN</> when already inside a transaction block will
    provoke a warning message.  The state of the transaction is not affected.
+   To nest transactions within a transaction block, use savepoints 
+   (See <xref linkend="sql-start-transaction" endterm="sql-start-transaction-title">
+   for more information).
   </para>
  </refsect1>
 
index 5695df1..48d160b 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/update.sgml,v 1.29 2004/06/09 19:08:13 tgl Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/update.sgml,v 1.30 2004/08/08 01:48:31 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -188,6 +188,19 @@ UPDATE employees SET sales_count = sales_count + 1 FROM accounts
 UPDATE employees SET sales_count = sales_count + 1 WHERE id =
   (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation');
 </programlisting>
+
+   Attempt to insert a new stock item along with the quantity of stock. If
+   the item exists, update the stock count of the existing item. To do this,
+   use savepoints.
+<programlisting>
+BEGIN;
+SAVEPOINT sp1;
+INSERT INTO wines VALUES('Chateau Lafite 2003', '24');
+-- Check for unique violation on name
+ROLLBACK TO sp1;
+UPDATE wines SET stock = stock + 24 WHERE winename='Chateau Lafite 2003';
+COMMIT;
+</programlisting>
   </para>
  </refsect1>