From ff8d68df5c5060ef4e86b747d07bbc19a1edafb8 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sun, 8 Aug 2004 01:48:31 +0000
Subject: [PATCH] Included is an example of using savepoints in a non-trivial
 example.

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  |  5 ++++-
 doc/src/sgml/ref/update.sgml | 15 ++++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/doc/src/sgml/ref/begin.sgml b/doc/src/sgml/ref/begin.sgml
index d40cb416bc5..bf1195f5277 100644
--- a/doc/src/sgml/ref/begin.sgml
+++ b/doc/src/sgml/ref/begin.sgml
@@ -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>
 
diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml
index 5695df1584b..48d160b2ece 100644
--- a/doc/src/sgml/ref/update.sgml
+++ b/doc/src/sgml/ref/update.sgml
@@ -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
 -->
 
@@ -187,6 +187,19 @@ UPDATE employees SET sales_count = sales_count + 1 FROM accounts
 <programlisting>
 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>
-- 
GitLab