MogDB/openGauss如何实现事务的rollback
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 行数据。
显示开启事务并利用回顾机制是一种能够有效避免误操作的方法。
MogDB/openGauss如何实现事务的rollback的更多相关文章
- PL/SQL 一个数据对象一个事务(rollback,submit)
/*********************************************** 一个数据对象一个事务(且记录错误信息到处理对象) ************************** ...
- Mogdb / opengauss 用户密码错误,用户被锁
# 问题概述xxx客户新上一套opengauss数据库,在测试中程序里用户的密码配置错误,导致用户被锁# 解决方案1.跟oracle 语法一样alter user xxx account unlock ...
- SQL Server事务、视图和索引
废话不多说,直接上干货 14:13:23 事务 概括:事务是一种机制,一个操作序列,包含一组数据库操作命令,并且把所有的命令作为一个整体一起 向系统提交或撤销操作 请求. 事务的特性: 1.原子性 ...
- spring声明式事务管理总结
事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...
- [NHibernate]事务
目录 写在前面 文档与系列文章 事务 增删改查 总结 写在前面 上篇文章介绍了nhibernate的增删改查方法及增加修改操作,这篇文章将介绍nhibernate的事务操作. SQL Server中的 ...
- 【转】SQL Server中的事务与锁
SQL Server中的事务与锁 了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器. 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂 ...
- 存储过程中使用事务,sql server 事务,sql事务
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...
- Hibernate配置与事务管理
数据库中 @num:代表一个变量 Set @num = 10; Select @num+@num from dual; dual:临时表 得到结果 20 Hibernate:运用数据持久化,使用OR ...
- 优化MySchool数据库(事务、视图、索引)
事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...
- 【T_SQL】 基础 事务
1.使用 T-SQL 语句来管理事务 开始事务:BEGIN TRANSACTION 提交事务:COMMIT TRANSACTION 回滚(撤销)事务:ROLLBAC ...
随机推荐
- 浅入Kubernetes(4):使用Minikube体验
Minikube 打开 https://github.com/kubernetes/minikube/releases/tag/v1.19.0 下载最新版本的二进制软件包(deb.rpm包),再使用 ...
- 分组聚合不再难:Pandas groupby使用指南
处理大量数据时,经常需要对数据进行分组和汇总,groupby为我们提供了一种简洁.高效的方式来实现这些操作,从而简化了数据分析的流程. 1. 分组聚合是什么 分组是指根据一个或多个列的值将数据分成多个 ...
- Java 方法的重载(overload)
1 /* 2 * 3 * 方法的重载(overload) 4 * 1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同 5 * 6 * "两同一不同&quo ...
- 使用 Docker 部署 File Browser 文件管理系统
1)File Browser 介绍 官网:https://filebrowser.org/ GitHub:https://github.com/filebrowser/filebrowser 今天为大 ...
- config.baseUrl.dev 变量 转移到 .env.local 中
config.baseUrl.dev 变量 转移到 .env.local 中 上下文 vue前端开发 问题 多人写代码的时候,会提交config.js里面的配置文件 解决方案 在根目录创建 .env. ...
- 摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头
摆脱鼠标系列 vscode 向右拆分编辑器 ctrl + 右箭头 为什么 今天看见一个两栏工作的,左侧放的是目录大纲,右侧是代码内容 用快捷键 ctrl + 右箭头 快速扩展一个,关闭可以ctrl + ...
- c语言中的指针,数组和结构体结合的一个经典案例
一 你真正懂了C语言了吗? 很多人刚把c语言用了两年,就以为很懂,等遇到稍微深层次一点的问题,就卡住了.这里,有一个问题,可以考察你对这三者理解如何. 二 一个例子: #include <std ...
- MySQl出现ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决方法
描述 使用到是阿里云服务器,系统为cent Os,给某个账户授权之后,root的账户就登录不进去了,原本root账户设置好了远程连接的权限了,网上搜索了一大堆,终于自己摸索得到了几个方法 产生原因 r ...
- Android USB开发1—开发环境搭建
通过Genymotion 与 VirtualBox 可以实现将电脑中的USB设备转接到Android模拟器中进行通信. Genymotion 配置 首先从https://www.genymotion. ...
- 虚幻引擎UE4如何实现打包后播放片头?其实超简单!
虚幻引擎作为一款全球性的3D实时开发工具,不仅在游戏行业,其在建筑.影视.医疗等行业也被广泛使用.作为开发人员,有时开发的UE虚幻引擎项目比较大,开始运行项目时需要等待较长的时间,还有些公司要求添加片 ...