事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

基于事务的原子性、一致性、隔离性和持续性特征,可以将相关的数据操作定义到一个事务当中。

如果操作过程中没有发生异常情况,就提交事务(commit)

如果发生了异常,就可以利用事务回滚(rollback),将数据库恢复到事务开启之前的状态。

下面,通过一个小案例,演示事务的提交和回滚(重点在于回滚)。

开启事务: begin; 提交事务:commit; 回滚:rollback;

操作示例:

mysql> #开启事务-> begin;
Query OK, 0 rows affected (0.00 sec)mysql> select * from student;
+----+------+-----+
| Id | Name | Age |
+----+------+-----+
|  1 | 李华 |  23 |
|  2 | 李强 |  22 |
|  3 | 刘明 |  26 |
|  4 | 杰克 |  21 |
+----+------+-----+
4 rows in set (0.06 sec)mysql> #插入操作-> insert into student values(5,'Jimmy',20);
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+-------+-----+
| Id | Name  | Age |
+----+-------+-----+
|  1 | 李华  |  23 |
|  2 | 李强  |  22 |
|  3 | 刘明  |  26 |
|  4 | 杰克  |  21 |
|  5 | Jimmy |  20 |
+----+-------+-----+
5 rows in set (0.06 sec)mysql> #回滚操作-> rollback;
Query OK, 0 rows affected (0.05 sec)mysql> select * from student;
+----+------+-----+
| Id | Name | Age |
+----+------+-----+
|  1 | 李华 |  23 |
|  2 | 李强 |  22 |
|  3 | 刘明 |  26 |
|  4 | 杰克 |  21 |
+----+------+-----+
4 rows in set (0.06 sec)mysql> insert into student values(5,'Jimmy',20);
Query OK, 1 row affected (0.08 sec)mysql> commit;
Query OK, 0 rows affected (0.00 sec)mysql> select * from student;
+----+-------+-----+
| Id | Name  | Age |
+----+-------+-----+
|  1 | 李华  |  23 |
|  2 | 李强  |  22 |
|  3 | 刘明  |  26 |
|  4 | 杰克  |  21 |
|  5 | Jimmy |  20 |
+----+-------+-----+
5 rows in set (0.06 sec)mysql> rollback;
Query OK, 0 rows affected (0.00 sec)mysql> select * from student;
+----+-------+-----+
| Id | Name  | Age |
+----+-------+-----+
|  1 | 李华  |  23 |
|  2 | 李强  |  22 |
|  3 | 刘明  |  26 |
|  4 | 杰克  |  21 |
|  5 | Jimmy |  20 |
+----+-------+-----+
5 rows in set (0.05 sec)

从上面的操作可以看到,开启事务之后对数据库进行操作,操作时候随即进行查看,可以看到记录是被修改的状态。但是随着事务回滚操作的进行,数据被退回到事务开始之前的状态。但是提交之后,回滚就不起作用了。

不论是上一次演示的事务提交被修改还是上面演示的回滚之后数据操作被回退,都是事务的正常应用。当事务被开启之后,对数据库所进行的操作都回被缓存起来,当提交事务的时候才会真正操作并写入到数据库中,如果选择的不是提交而是回滚,就不会将事务中定义的操作运用到数据库中。

数据库事务应用

程序设计中,如果不确定对数据库的操作一定回成功,比如完成某一功能需要进行多次数据库操作,如果前面的操作都成功了,但是后面的某一步操作因为某些原因失败,就需要进行重新操作,这个时候,我们希望数据库是操作之前的状态,事务就可以帮我们完成这样的设计。在这一组操作之前,开启一个事务,每进行一个操作都对操作进行验证,确保操作被有效进行,如果所有操作都正确执行,就提交事务,如果有哪步操作发生了异常,就进行事务回滚。

MySQL数据库的事务开启,提交和回滚相关推荐

  1. oracle表结构修改回滚,87.Oracle数据库SQL开发之 修改表内存——数据库事务的提交和回滚...

    87.Oracle数据库SQL开发之 修改表内存--数据库事务的提交和回滚 数据库事务(transaction)就是一组SQL语句,这组SQL语句时一个逻辑工作单元. 要永久性的记录事务中SQL语句的 ...

  2. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  3. java pg数据库事务回滚,基于Postgresql 事务的提交与回滚解析

    用过oracle或mysql的人都知道在sqlplus或mysql中,做一个dml语句,如果发现做错了,还可以rollback;掉,但在PostgreSQL的psql中,如果执行一个dml,没有先运行 ...

  4. mysql 事务实例_mysql实现事务的提交和回滚实例

    mysql创建存储过程的官方语法为: 复制代码 代码如下:START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] R ...

  5. mysql事务的提交和回滚

    START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND ...

  6. 二十八、事务的提交与回滚演示

    1.创建表 2.查询表中数据 3.开启事务START TRANSACTION; 4.插入数据 5.查看数据 6.修改数据 7.查看数据 8.回滚事务 9.查看数据 自动提交模式 自动提交模式用于决定新 ...

  7. workbench 手动提交事务_mysql实现事务的提交和回滚实例

    mysql创建存储过程的官方语法为: START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] RO ...

  8. mysql 提交修改_MySQL客户端、服务器端工具、sql_mode、存储引擎修改、事务的提交和回滚、隔离级别...

    # ls /usr/local/mysql/bin mysql    mysqladmin    mysqldump    客户端程序 mysqld   mysqld_safe             ...

  9. MySQL中事务的提交和回滚机制

    应用场景: 银行取钱,从ATM机取钱,分为以下几个步骤 1 登陆ATM机,输入密码: 2 连接数据库,验证密码: 3 验证成功,获得用户信息,比如存款余额等: 4 用户输入需要取款的金额,按下确认键: ...

最新文章

  1. 众测 Nebula Graph | 捉虫计划已开启,这项有礼
  2. BAT Android面试专题深入探究:四大组件+ViewPager+组件化架构+Bitmap
  3. SAP Marketing Cloud的sentiment engagement
  4. 智慧园区-楼宇建模技巧之【建楼篇】
  5. 西华大学c语言考试题,西华大学C语言程序设计复习题
  6. 【每日算法Day 66】经典面试题:不用四则运算如何做加法?
  7. linux命令行关机 密码,[ Linux 基本命令 001 ] 登陆,登出,重启,关机
  8. Android从 HttpResponse (或者InputStream) 获取字符串内容的代码
  9. 2022年最新过DD检测方法dd防检测方法
  10. PM42L-048 步进电机
  11. HTML5 新特性 - WebSocket实现聊天(群聊天室、一对一聊天)
  12. 【ROS入门21讲】订阅者Subscriber的编程使用
  13. 安卓手机微信怎么恢复聊天记录?方法简单轻松搞定
  14. 不看绝对血亏!mysql下载安装教程win10
  15. Android 网络属性详解
  16. 数字签名标准(DSS)
  17. Android监听按键锁屏广播
  18. 电脑公司 ghost win7_SP1 X64 特别版 2015.05
  19. 电子沙盘系统android,电子沙盘系统
  20. python vba excel课程_【Python3+VBA】在Excel中生成小姐姐|python3教程|python入门|python教程...

热门文章

  1. 贷款报单管理系统开发-集贷前审核、贷中管理、贷后催款、逾期预警等多位于一体
  2. 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
  3. 苹果id登录_苹果服务器挂了...ID 登录不了!
  4. XML 与 JSON 解析教程
  5. C语言——一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。
  6. 为什么我的 Wireshark 抓不到/抓不全 HTTP 数据包 ?
  7. 接口自动化测试框架搭建
  8. 微信小程序基于vant和springboot实现附件上传和预览
  9. MediaPlayer简单使用
  10. 2020华为暑假实习业务主管面经历--硬件技术工程师(单板硬件开发方向)