事务

  • 事务( 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. Hadoop(一)Hadoop核心架构与安装

    Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架.核心组件是HDFS.MapReduce.Yarn. HDFS:分布式存储 MapReduce:分布式计算 Yarn:调度Ma ...

  2. STM8S103F3P6 开发环境笔记

    STM8S103F3 产品手册 https://www.st.com/resource/en/datasheet/stm8s103f2.pdf 内核 16 MHz advanced STM8 core ...

  3. insert语句生成的存储过程

    问题: 1.如何配置数据库数据: 方式一:图形界面点击输入数据,导出成sql. 缺点:表多,数据多的时候非常繁琐,字段含义需要另外开窗口对照. 方式二:徒手写或者修改已有语句:insert table ...

  4. 团队Beta演示

    组长博客 本组(组名)所有成员 短学号 姓名 2236 王耀鑫(组长) 2210 陈超颖 2209 陈湘怡 2228 许培荣 2204 滕佳 2205 何佳琳 2237 沈梓耀 2233 陈志荣 22 ...

  5. 一文看懂二层接口、三层接口、PVID及VLANIF

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 文章来源:朱仕耿个人博客 一位同事问了个关于二层和三层端口的概念及区分,以及关于VLANIF. ...

  6. typeScript类型总结

    1.对象类型 {} 用来指定对象中可以包含哪些属性,在属性名后加?表示属性是可选的 语法:{属性名:属性值类型,属性名:属性值类型} 示例: let a:{name:string,age?:numbe ...

  7. S3C2410——LED灯实验

    一.S3C2410输入/输出的原理 Linux主要有字符设备.块设备和网络设备3类驱动程序,我们一般编写的驱动都是字符设备驱动程序. 二.程序部分 编写程序控制3个LED灯,代码分为2个部分:控制LE ...

  8. Docker将镜像文件发布到阿里云

    一.创建新镜像文件 1.创建容器并在容器内创建一个文件夹 在容器内创建一个新文件主要是为了代表这个容器非镜像文件直接创建的容器,而是通过自定义在容器内创建了属于自己的文件 2.提交容器副本使之成为一个 ...

  9. [SQLServer]NetCore中将SQLServer数据库备份为Sql脚本

    NetCore中将SQLServer数据库备份为Sql脚本 描述: 最近写项目收到了一个需求, 就是将SQL Server数据库备份为Sql脚本, 如果是My Sql之类的还好说, 但是在网上搜了一大 ...

  10. Windows 程序安装与更新方案: Clowd.Squirrel

    我的Notion Clowd.Squirrel Squirrel.Windows 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装和更新. Squirrel.W ...