首页 > 其他分享 >MogDB/openGauss如何实现事务的rollback

MogDB/openGauss如何实现事务的rollback

时间:2024-04-01 14:33:19浏览次数:23  
标签:insert 回滚 rollback MogDB 事务 test openGauss select

MogDB/openGauss 如何实现事务的 rollback
本文出处:https://www.modb.pro/db/113262

数据库最主要的功能就是存储数据,然而我们在进行数据库操作时,却很容易发生误操作数据的情况,那么在 MogDB 中该如何实现误操作数据恢复呢?本文通过具体示例简要介绍如何通过回滚还原到误操作前的状态。

使用 gsql 连接 MogDB 时,SQL 语句执行完毕会自动提交,我们可以通过开启事务来避免误操作。事务的提交与回滚体现事务的原子性特征,事务语句要么提交,要么回滚。

准备工作:

登录数据库。

示例步骤:

创建测试表并插入数据

create table test (id int,name char(10));
insert into test values(1,'aa');
insert into test values(2,'bb');
表中插入数据回滚

--查看当前表中数据
select * from test;
--开启事务并插入数据,之后回滚操作
begin;
insert into test values(3,'cc');
select * from test;
rollback;
--查看insert已经回滚
select * from test;
通过上述示例可以看出,执行回滚之后,新插入的一行数据并未存入表中,更新和删除操作也是同样。

除此之外,事务执行过程中还可以创建保存点,如果不指定保存点,回滚操作会回滚到事务起始点,即 begin 开始的地方。在比较大的事务中,可以把执行过程分为几个步骤,每个步骤执行完成后创建一个保存点,后续步骤执行失败时,可回滚到之前的保存点,而不必回滚整个事务。

开启事务,在上表中继续插入数据,并创建两个保存点

begin;
insert into test values(3,'cc');
savepoint savepoint1;
insert into test values(4,'dd');
savepoint savepoint2;
insert into test values(5,'ee');
回滚至保存点

--查看当前表数据
select * from test;
--回滚到保存点savepoint2,查看数据
rollback to savepoint savepoint2;
select * from test;
--回滚到保存点savepoint1,查看数据
rollback to savepoint savepoint1;
select * from test;
提交事务,查看数据

commit;
select * from test;
通过上述示例可以看出,回滚到保存点 1 后,后续操作未提交,而保存点 1 之前的操作会提交,即最终表中存有 3 行数据。

显示开启事务并利用回顾机制是一种能够有效避免误操作的方法。

标签:insert,回滚,rollback,MogDB,事务,test,openGauss,select
From: https://www.cnblogs.com/helloopenGauss/p/18108344

相关文章

  • openGauss每日一练第6天
    学习地址https://www.modb.pro/course/133学习目标学习openGauss创建模式、修改模式属性和删除模式模式是一组数据库对象的集合,主要用于控制对数据库对象的访问课后作业1.创建一个名为tpcds的模式SQL文本:createschematpcds;\dntpcdsomm=#createschematpcds;C......
  • MogDB/openGauss数据库package关键字的两种用法
    MogDB/openGauss数据库package关键字的两种用法本文出处:https://www.modb.pro/db/237701package关键字在MogDB数据库里有两种用法:package包,分为PackageSpecification和PackageBody。注意:需要在Oracle兼容下(dbcompatibility=‘A’)package属性,用于存储过程重......
  • MogDB/OpenGauss数据库中通过参数控制抓取慢sql
    MogDB/OpenGauss数据库中通过参数控制抓取慢sql本文出处:https://www.modb.pro/db/221556mogdb数据库中可以通过打开相应的参数抓取慢sql,该参数为log_min_duratuion_statement。log_min_duration_statement参数说明:当某条语句的持续时间大于或者等于特定的毫秒数时,log_min......
  • MogDB学习笔记之 -- 了解pagewriter线程
    MogDB学习笔记之--了解pagewriter线程本文出处:https://www.modb.pro/db/183172在前面的MogDB学习系列中,我们了解了核心的bgwriter进程,今天继续来学习另外一个主要的线程,即pagewriter;首先来看下数据库相关的参数设置:postgres=#selectname,setting,category,context......
  • openGauss每日一练(全文检索)
    openGauss每日一练(全文检索)本文出处:https://www.modb.pro/db/224179学习目标学习openGauss全文检索openGauss提供了两种数据类型用于支持全文检索。tsvector类型表示为文本搜索优化的文件格式,tsquery类型表示文本查询课后作业1.用tsvector@@tsquery和tsquery@@......
  • openGauss每日一练第四天
    openGauss每日一练第四天本文出处:https://www.modb.pro/db/193083学习地址https://www.modb.pro/course/133学习目标学习openGauss创建角色、修改角色属性、更改角色权限和删除角色角色是用来管理权限的,从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角......
  • openGauss每日一练第三天
    openGauss每日一练第三天本文出处:https://www.modb.pro/db/193083学习目标学习openGauss创建数据库、修改数据库属性和删除数据库课后作业1.分别创建名为tpcc1和tpcc2的数据库SQL文本:createdatabasetpcc1;createdatabasetpcc2;\lomm=#createdatabasetpcc1......
  • MogDB/openGauss 坏块测试-对启动的影响-测试笔记1
    MogDB/openGauss坏块测试-对启动的影响-测试笔记1在UPDATE操作提交后,脏块落盘前kill掉mogdb数据库,然后对UPDATE修改的坏进行以下破坏操作,仍然能够启动数据库,数据未丢失。1、用旧数据文件替换,可以启动2、修改成错误的checksum,可以启动3、数据块修改成错误的lsn,可......
  • MogDB 安装解压错误:cannot run bzip2: No such file or directory
    MogDB安装解压错误:cannotrunbzip2:Nosuchfileordirectory本文出处:https://www.modb.pro/db/403662问题症状MogDB安装时,涉及两个步骤解压,第一步解压缩tar包:[root@enmotech~]#tar-xvfMogDB-2.1.1-CentOS-x86_64.tarupgrade_sql.tar.gzMogDB-2.1.1-CentOS-64bit......
  • 编译安装openGauss 3.0.0
    编译安装openGauss3.0.0环境检查1.1检查OS版本openGauss支持的操作系统:CentOS7.6(x86架构)openEuler-20.03-LTS(aarch64架构)openEuler-20.03-LTS(x86架构)Kylin-V10(aarch64架构)[root@og3~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)1.2修......