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