事务

  • 事务( transaction) 是数据库中执行同一业务多条SQL语句 工作单元,事务可以保证多条SQL语句全部执行成功或全部执行失败

  • 和事务相关的SQL语句:

  • 验证事务:

    1. 创建表:
    
    create  table user (id int primary key auto_increment,name varchar(10),money int,state varchar(10));
    
    2. 插入数据
    
    insert into user values (null,'李雷',5000,'正常'),(null,'韩梅梅',50,'正常'),(null,'Lucy',10,'冻结');
    
    3. 李雷给Lucy转账;
    
       update user set money=4000 where id=1 and state='正常';
    
       update user set money=1005 where id=3 and state='正常';
    • 以上代码无事务保护,则导致数据库内部的数据李雷丢了1000块钱

    • 以下操作有事务保护的步骤;

      • 开启事务;

        begin;

      • 让李雷-1000;

        update user set money=3000 where id=1 and state='正常';

      • 让Lucy+1000;

        update user set money=1010 where id=3 and state='正常';

      • 因为一条成功一条失败 所以不能把内存中的改变提交到磁盘中,所以需要执行回滚指令

        rollback;

    • 转账成功执行流程;

      1. 开启事务;

        ​ begin;

      2. 让李雷-1000;

        update user set money=3000 where id=1 and state='正常';

      3. 让韩梅梅+1000;

        update user set money=1010 where id=2 and state='正常';

      4. 由于转账业务的多条SQL语句全部执行成功 所以可以执行提交指令

        把内存的改动提交到磁盘中

        commit;

  • 和事务相关的SQL语句;

    1. begin: 开启事务
    2. rollback: 回滚事务 把内存的改动清除
    3. commit: 提交事务 把内存的改动一次性提交到磁盘中
  • 第二种开启事务的方式

    • 数据库中事务默认是自动提交的
      1. 查看数据自动提交的状态
    
         show variables like '%autocommit';
    
      2. 修改自动提交的状态==0关闭     1开启==
    
         set autocommit=0; 
    
      3. 修改李雷钱为50000;
    
         update user set money=50000  where id=1;
    
      - savepoint:   保存回滚点;
    
        set autocommit=1;
    
        500
    
        begin;
    
        update user set money=10000 where id=1;
    
        savepoint s1;
    
        update user set monry=20000 where id=2;
    
        savepoint s2;
    
        update user set money=30000 where id=3;
    
        rollback to s1;
  • 总结事务相关指令;

    1. begin 开启事务
    2. rollback 回滚事务
    3. commit 提交事务
    4. 查看自动提交状态 show variables like '%autocommit%';
    5. 设置自动提交状态 set autocommit=0/1;
    6. 保存回滚点 savepoint s1;
    7. 回滚到回滚点 rollback to s1;

07 MySQL_事务的更多相关文章

  1. 【WCF--初入江湖】07 分布式事务

    07 分布式事务 一.前言 [1]理解事务特性 [2]掌握TransactionFlow 特性 [3]掌握WCF中的事务属性 TransactionAutoCompleteOnSessionClose ...

  2. MySQL_事务没有提交导致 锁等待 Lock wait timeout exceeded

    java.lang.Exception:### Error updating database.  Cause: java.sql.SQLException: Lock wait timeout ex ...

  3. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)

    事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...

  4. mysql_事务

    事务是针对数据的,不是针对结构的 存储引擎innodb支持事务,myisam不支持事务需求:有一张银行账户表,有A用户给B账户转账,A账户减少,B账户增加,但是A操作之后断电. 解决方案:A减少钱,但 ...

  5. MySQL_事务(四大特性)

    本文转载:https://www.cnblogs.com/kismetv/p/10331633.html 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首 ...

  6. Mysql_事务_存储过程_触发器

    一.什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言( ...

  7. 【WCF--初入江湖】目录

    [WCF--初入江湖]目录 [WCF--初入江湖]01 WCF编程概述 [WCF--初入江湖]02 WCF契约 [WCF--初入江湖]03 配置服务 [WCF--初入江湖]04 WCF通信模式 [WC ...

  8. sql平时小总结

    sql练习:举例子: 1.CREATE TABLE IF NOT EXISTS zz0 (number INT(11)); CREATE TABLE IF NOT EXISTS zz1 (number ...

  9. java web 开发快速宝典 ------电子书

    http://www.educity.cn/jiaocheng/j10259.html 1.2.1  JDk 简介 JDK是Sun公司在1995年推出的一套可以跨操作系统平台编译和运行Java程序的开 ...

随机推荐

  1. 公众号走走看看——js

    1.数字转换字符串/字符串转换数字 2.短循环 3.性能测试(执行时间) 4.交换值 5.合并数组(IE不兼容) 6.数组去重 7.判断给定参数是否是数字 8.获取最大最小值.取随机数(arr.len ...

  2. wlile、 for循环和基本数据类型及内置方法

    while + else 1.while与else连用 当while没有被关键字break主动结束的情况下 正常结束循环体代码之后执行else的子代码 """ while ...

  3. 使用Spring MockMVC对controller做单元测试

    1.对单一controller做测试. import org.junit.Before; import org.junit.Test; import org.springframework.beans ...

  4. swagger在线api文档搭建指南,用于线上合适么?

    在上一篇文章中,我们讲解了什么是 api,什么是 sdk: https://www.cnblogs.com/tanshaoshenghao/p/16217608.html 今天将来到我们万丈高楼平地起 ...

  5. 890. Find and Replace Pattern - LeetCode

    Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["ab ...

  6. 使用 Flutter 与 Firebase 制作 I/O 弹球游戏

    文/ Very Good Ventures 团队,5 月 11 日发表于 Flutter 官方博客 为了今年的 Google I/O 大会,Flutter 团队使用 Flutter 以及 Fireba ...

  7. Probabilistic two-stage detection

  8. Redis概述及基本数据结构

    SQL vs NoSQL 结构化 SQL 是结构化的,一旦定义了表结构,以后在维护数据的时候必须严格遵守定义的结构. NoSQL 是非结构化的,常见的形式有 Redis 的 Key-Value 存储形 ...

  9. HTML 继承属性

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shad ...

  10. python爬虫之JS逆向

    Python爬虫之JS逆向案例 由于在爬取数据时,遇到请求头限制属性为动态生成,现将解决方式整理如下: JS逆向有两种思路: 一种是整理出js文件在Python中直接使用execjs调用js文件(可见 ...