暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB如何实现误操作数据恢复

原创 Guo Huan 2021-09-24
493

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

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

准备工作:

登录数据库。

示例步骤:

  1. 创建测试表并插入数据

    create table test (id int,name char(10)); insert into test values(1,'aa'); insert into test values(2,'bb');

    image20210924154102487.png

  2. 表中插入数据回滚

    --查看当前表中数据 select * from test; --开启事务并插入数据,之后回滚操作 begin; insert into test values(3,'cc'); select * from test; rollback; --查看insert已经回滚 select * from test;

    image20210924154244695.png

通过上述示例可以看出,执行回滚之后,新插入的一行数据并未存入表中,更新和删除操作也是同样。

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

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

    begin; insert into test values(3,'cc'); savepoint savepoint1; insert into test values(4,'dd'); savepoint savepoint2; insert into test values(5,'ee');

    image20210924155008211.png

  2. 回滚至保存点

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

    image20210924160808093.png

  3. 提交事务,查看数据

    commit; select * from test;

    image20210924160854517.png

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

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论