云数据库 GAUSSDB-ROLLBACK TO SAVEPOINT:示例

时间:2024-11-13 14:46:08

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
--开启事务。
gaussdb=# START TRANSACTION;

--设置保存点my_savepoint。
gaussdb=# SAVEPOINT my_savepoint;

--回滚至保存点my_savepoint。
gaussdb=# ROLLBACK TO SAVEPOINT my_savepoint;

--游标位置不受保存点回滚的影响。
gaussdb=# DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;

--设置保存点foo。
gaussdb=# SAVEPOINT foo;

--读取一条数据,为第一条数据。
gaussdb=# FETCH 1 FROM foo;
 ?column? 
----------
        1
--回滚至保存点foo。
gaussdb=# ROLLBACK TO SAVEPOINT foo;

--读取一条数据,为第二条数据。
gaussdb=# FETCH 1 FROM foo;
 ?column? 
----------
        2
--释放保存点。
gaussdb=# RELEASE SAVEPOINT my_savepoint;

--结束事务。
gaussdb=# COMMIT;
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0677.html