From 5e45211a64149b3c659b90ff2de6fa982a5a93ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:17:33 +0200 Subject: Adding upstream version 15.5. Signed-off-by: Daniel Baumann --- doc/src/sgml/html/sql-rollback-to.html | 71 ++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 doc/src/sgml/html/sql-rollback-to.html (limited to 'doc/src/sgml/html/sql-rollback-to.html') diff --git a/doc/src/sgml/html/sql-rollback-to.html b/doc/src/sgml/html/sql-rollback-to.html new file mode 100644 index 0000000..37218b2 --- /dev/null +++ b/doc/src/sgml/html/sql-rollback-to.html @@ -0,0 +1,71 @@ + +ROLLBACK TO SAVEPOINT

ROLLBACK TO SAVEPOINT

ROLLBACK TO SAVEPOINT — roll back to a savepoint

Synopsis

+ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name
+

Description

+ Roll back all commands that were executed after the savepoint was + established. The savepoint remains valid and can be rolled back to + again later, if needed. +

+ ROLLBACK TO SAVEPOINT implicitly destroys all savepoints that + were established after the named savepoint. +

Parameters

savepoint_name

+ The savepoint to roll back to. +

Notes

+ Use RELEASE SAVEPOINT to destroy a savepoint + without discarding the effects of commands executed after it was + established. +

+ Specifying a savepoint name that has not been established is an error. +

+ Cursors have somewhat non-transactional behavior with respect to + savepoints. Any cursor that is opened inside a savepoint will be closed + when the savepoint is rolled back. If a previously opened cursor is + affected by a FETCH or MOVE command inside a + savepoint that is later rolled back, the cursor remains at the + position that FETCH left it pointing to (that is, the cursor + motion caused by FETCH is not rolled back). + Closing a cursor is not undone by rolling back, either. + However, other side-effects caused by the cursor's query (such as + side-effects of volatile functions called by the query) are + rolled back if they occur during a savepoint that is later rolled back. + A cursor whose execution causes a transaction to abort is put in a + cannot-execute state, so while the transaction can be restored using + ROLLBACK TO SAVEPOINT, the cursor can no longer be used. +

Examples

+ To undo the effects of the commands executed after my_savepoint + was established: +

+ROLLBACK TO SAVEPOINT my_savepoint;
+

+

+ Cursor positions are not affected by savepoint rollback: +

+BEGIN;
+
+DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;
+
+SAVEPOINT foo;
+
+FETCH 1 FROM foo;
+ ?column?
+----------
+        1
+
+ROLLBACK TO SAVEPOINT foo;
+
+FETCH 1 FROM foo;
+ ?column?
+----------
+        2
+
+COMMIT;
+

Compatibility

+ The SQL standard specifies that the key word + SAVEPOINT is mandatory, but PostgreSQL + and Oracle allow it to be omitted. SQL allows + only WORK, not TRANSACTION, as a noise word + after ROLLBACK. Also, SQL has an optional clause + AND [ NO ] CHAIN which is not currently supported by + PostgreSQL. Otherwise, this command conforms to + the SQL standard. +

\ No newline at end of file -- cgit v1.2.3