为了保证在应用程序、数据库或系统出现错误后,数据库能够被还原,以保证数据库的完整性,所以需要进行回滚。

  回滚(rollback)就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。

  回滚执行相反的操作,可以撤销错误的操作,从而保证数据的完整性。

  例如,用户A给用户B转账,在数据库中就需要给A与B的账户信息进行修改(update)操作,而这两条sql语句必须都执行或者都不执行。  例如先执行用户B的修改(update)语句,使用户B的账户金额增加了1000,然后执行用户A的update语句,使用户A的账户金额减少了1000。  如果用户A的账户金额大于1000,则交易顺利进行,不存在任何问题,但是当用户A的账户金额小于1000时,由于转账金额不允许大于账户金额,第二条sql语句语句就无法正确执行,此时,数据库的状态必须回到没有执行B的update语句之前,需要进行回滚操作,回滚就是执行一遍相反的操作,此时再执行B的update金额减1000。

  需要注意的回滚与撤销的区别。  回滚是指将数据库的状态恢复到执行事务之前的状态,其中可能会使用UNDO日志进行回滚。   撤销是一种记录日志的方式,并不是主要服务于事务回滚,而是主要用于系统从故障中恢复。  例如,系统突然断电,系统要根据UNDO日志对未完成的事务进行处理,保证数据库的状态为执行这些事务之前的状态。

回滚 rollback的更多相关文章

  1. Oracle 回滚(ROLLBACK)和撤销(UNDO)

    一.回滚(ROLLBACK)和撤销(UNDO) 回滚和前滚是保证Oracle数据库中的数据处于一致性状态的重要手段. 在9i版本以前 Oracle使用数据库中的回滚段来实现未提交数据或因系统故障导致实 ...

  2. Spring3声明式事务处理事务无法回滚rollback分析(annotation与xml配置混用)

    新项目试运行,DBA提示生产数据库一个表的事务20分钟都未提交,分析过程如下: 1.查看日志log文件,最近20分钟是否有error日志: 2.发现某表有insert错误日志,初步判断由该表插入异常, ...

  3. JDBC_事务概念_ACID特点_隔离级别_提交commit_回滚rollback

    事务的概念 一组要么同时执行成功,要么同时执行失败的SQL语句,是数据库操作的一个执行单元! 事务开始于: 连接到数据库上,并执行一条DML语句(insert,update或delete),前一个事务 ...

  4. sql回滚

    rollback是针对事务的,你如果没有在执行语句之前开启事务,那么无法rollback,建议你还是想别的办法吧,事务语句如下(sqlserver的给你借鉴):--开启事务begin tran --执 ...

  5. mysql分类和事务回滚

    主要内容: ***数据定义语言DDL重点 ***数据操纵语言DML重点 数据查询语言DQL重点 ---事务控制语言TCL ---数据库控制语言DCL ---主键(primary key) ---数据冗 ...

  6. junit测试类防止事务回滚-工作心得

    本随笔文章,由个人博客(鸟不拉屎)转移至博客园 发布时间: 2018 年 12 月 06 日 原地址:https://niaobulashi.com/archives/junit-test-rollb ...

  7. Oracle下回滚rollback的使用

    oracle中可以设置一个回滚点进行回滚 设置回滚名称 savepoint pointa ; 进行回滚 rollback to pointa; 如果期间有删除的数据就回来了

  8. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  9. spring5 源码深度解析----- 事务的回滚和提交(100%理解事务)

    上一篇文章讲解了获取事务,并且通过获取的connection设置只读.隔离级别等,这篇文章讲解剩下的事务的回滚和提交 回滚处理 之前已经完成了目标方法运行前的事务准备工作,而这些准备工作最大的目的无非 ...

随机推荐

  1. hdu 1998 奇数阶魔方(找规律+模拟)

    应该不算太水吧. 17  24   1   8  15   23   5   7  14  16    4   6  13  20  22   10  12  19  21   3   11  18 ...

  2. mybatis 入门优化

    在上一节<mybatis快速入门>的基础上对IWebUserDao的实现类进行了优化,暂时命名为WebUserDaoMybatis2.java package com.mozi.dao.i ...

  3. 【.NET】电话号码打星号(隐藏部分)

    描述:支持多个电话: //隐藏部分内容,支持一个值有多个联系方式,用逗号隔开.//参数:value - 值,subIndex - 从第几位开始,subQty - 隐藏几位数 protected str ...

  4. centos tomcat 安装

    安装说明 安装环境:CentOS-6.3 安装方式:源码安装  软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/downloa ...

  5. 【百科】CLEO 逐推縮寫命名法

    一. 適用場合 1. C# Windows Forms 等窗體開發技術的控件名稱縮寫: 2. 強行縮寫駝峰命名法(Camel-Case).帕斯卡命名法的英文的時候: 二. 命名規則 1. 首字母大寫: ...

  6. c++ 常见问题之 const

    const 默认状态下const对象仅在文件内有效,添加extern关键字可以在多个文件共享 const 引用: 可以把引用绑定到const对象上,对常量的引用不能被用作修改它所绑定的对象 const ...

  7. C# 中 重载,重写,隐藏的区别

    重载: 就是写多个同名方法,参数个数不同或类型不同或返回值不同 重写:子类中实现的方法必须加override关键词   普通非抽象父类需要virtual 抽象类里面抽象方法abstract 接口的实现 ...

  8. java 包 修饰符 权限详解

    作用域   当前类    同package   子孙类 其他package  public √   √  √ √  protected √ √ √ ×  friendly(default) √ √ × ...

  9. C# 给枚举定义DescriptionAttribute,把枚举转换为键值对

    在C#中,枚举用来定状态值很方便,例如我定义一个叫做Season的枚举 public enum Season { Spring = 1, Summer = 2, Autumn = 3, Winter ...

  10. 面试题-Java基础-布局管理器

    1.什么是布局管理器? 布局管理器用来在容器中组织组件.