ITPub博客

首页 > 数据库 > 国内数据库 > 南大通用 GBase 8s 事务保存点进阶解读(之二)

南大通用 GBase 8s 事务保存点进阶解读(之二)

原创 国内数据库 作者:GBASE南大通用 时间:2025-08-01 15:26:27 0 删除 编辑

在数据库操作中,事务的管理对于确保数据的一致性和完整性至关重要。南大通用 GBase 8s 提供了事务保存点的功能,允许在事务内部设置标记,从而实现部分回滚,而不是回滚整个事务。这为复杂事务的错误处理提供了更大的灵活性。本文将详细介绍 GBase 8s 中事务保存点的定义、作用、操作语法以及关键特性。

嵌套支持


• 创建数据库和表

CREATE DATABASE db1 WITH LOG; CREATE TABLE t1 (id INT, c1 VARCHAR(10));


• 开启事务并设置嵌套保存点

BEGIN WORK;

INSERT INTO t1 VALUES (1, 'name1'); SAVEPOINT sp1;

UPDATE t1 SET c1 = 'rose';

SAVEPOINT sp2; INSERT INTO t1 VALUES (2, 'name2'); SAVEPOINT sp3;

INSERT INTO t1 VALUES (3, 'name3'); SAVEPOINT sp4;


• 回滚到嵌套保存点

ROLLBACK TO SAVEPOINT sp2;

此时, sp3 和 sp4 自动失效:

ROLLBACK TO SAVEPOINT sp3;

输出:

26076: Unable to rollback to savepoint sp3. 32026: Savepoint not found.

名称覆盖

• 创建表并开启事务

CREATE TABLE t2 (id INT, c1 VARCHAR(10));

BEGIN WORK; INSERT INTO t2 VALUES (1, 'name1');

SAVEPOINT sp1; INSERT INTO t2 VALUES (2, 'name2');

SAVEPOINT sp2; INSERT INTO t2 VALUES (3, 'name3');

SAVEPOINT sp2;


• 查询数据

SELECT * FROM t2;

输出:

id c1 1 name1 2 name2 3 name3


• 回滚到覆盖的保存点

ROLLBACK TO SAVEPOINT sp2;

此时,第一个 sp2 保存点失效,数据状态回滚到第二个 sp2 :

SELECT * FROM t2;

输出:

id c1 1

name1 2

name2 3

name3


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3092587/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1319
  • 访问量
    1297577