事务

  • 事务( 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. java.time包 时间处理类

    已经习惯用 Date类这里就不再赘述,下面介绍新的时间处理类 1.LocalDate类 // 本地日期LocalDate localDate = LocalDate.of(2022, 2, 27);S ...

  2. Intel CPU平台和架构介绍

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 服务器主板上数据传输流依次为CPU .内存.硬盘和网卡, ...

  3. 好客租房39-react组件基础总结

    1组件的两种创建方式:函数组件和类组件 2无状态函数组件 负责静态结构展示 3有状态组件 负责更新ui 让页面动起来 4绑定事件注意this指向问题 5使用受控组件创建表单 6完全利用js语言的能够力 ...

  4. unity---2d游戏杂记

    2d游戏制作的笔记 save Layout 增加配置 Packges文件夹 插件 调整视野 鼠标中键 拉近拉远 鼠标右键 平移 Alt+鼠标左键 移动视角 Pivot/Center 当前物体中心和多个 ...

  5. Python实现将csv文件转化为html文件

    核心技术: Pandas 需要转化的csv文件(business.csv): 源代码: import pandas as pd f=pd.read_csv("business.csv&quo ...

  6. vue大型电商项目尚品汇(前台篇)day04

    这几天一直都在做项目,只是没有上传上来,即将把前台项目完结了.现在开始更新整个前台的部分 一.面包屑处理 1.分类操作 点击三级联动进入搜索产生面包屑,直接取参数中的name即可 点击x怎么干掉这个面 ...

  7. Python Selenium库

    Selenium库 自动化测试工具,支持多种游览器 爬虫中主要用来解决JavaScript渲染的问题 安装Selenium pip3 install selenium 安装游览器驱动 下载驱动地址:h ...

  8. SpringBoot官方支持任务调度框架,轻量级用起来也挺香!

    大家好,我是二哥呀.定时任务的应用场景其实蛮常见的,比如说: 数据备份 订单未支付则自动取消 定时爬取数据 定时推送信息 定时发布文章 等等(想不出来了,只能等等来凑,,反正只要等的都需要定时,怎么样 ...

  9. GDKOI 2021 Day3 PJ 懵逼记

    今天早了一点起来,初三的大奆都来做比赛了, 自然,自测的有许多 AK 虽然今天的题比昨天简单,但还是脑子还是十分迟钝,以至于贪心都想不出 真为明天的提高组而担忧 T1 斜率被卡 90 ,直接用勾股定理 ...

  10. Spring Boot 实践 :Spring Boot + MyBatis

    Spring Boot 实践系列,Spring Boot + MyBatis . 目的 将 MyBatis 与 Spring Boot 应用程序一起使用来访问数据库. 本次使用的Library spr ...