事务

  • 事务( 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. 三月总结&四月计划

    三月总结 1. 主要任务 <C++设计模式>网课 ① 进展: 看完,对设计模式的整体设计思路和几个重要的设计模式重点学习了一下,目前对设计模式的认识还比较浅 ② 总结: 做完总结 ③ 反思 ...

  2. python+pytest接口自动化(15)-日志管理模块loguru简介

    python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细). 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理, ...

  3. grafana展示zabbix统计

    1.安装grafana   参照官网文档:https://grafana.com/grafana/download 我这边是centos系统,执行这两个命令 wget https://dl.grafa ...

  4. 2.0 vue2+tinymce实现图片上传与回显

    1.效果 2.配置 2.1 在init中添加图片上传函数 // 图片上传 images_upload_handler: (blobInfo, success, failure) => { // ...

  5. Oceanbase读写分离方案探索与优化

    [作者] 许金柱,携程资深DBA,专注于分布式数据库研究及运维. 台枫,携程高级DBA,主要负责MySQL和OceanBase的运维. [前言]    读写分离,是一种将数据库的查询操作和写入操作分离 ...

  6. 以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...

  7. [BZOJ5449] 序列

    题目链接:序列 Description 给定一个\(1\)~\(n\)的排列x,每次你可以将 \(x_1, x_2, ..., x_i\) 翻转. 你需要求出将序列变为升序的最小操作次数. 多组数据. ...

  8. Flink整合面向用户的数据流SDKs/API(Flink关于弃用Dataset API的论述)

    动机 Flink提供了三种主要的sdk/API来编写程序:Table API/SQL.DataStream API和DataSet API.我们认为这个API太多了,建议弃用DataSet API,而 ...

  9. ES6 - promise(2)

    从上一篇中我们知道promise的概念,上一篇也提到了 promise的过程: 启动异步任务 => 返回promise对象 =>给promise对象绑定回调函数(甚至可以在异步任务结束后指 ...

  10. CabloyJS微信模块、企业微信模块已出齐

    前言 当Cabloy-企业微信模块完成时,加上之前已完成的Cabloy-微信模块,关于在CabloyJS中与微信/企业微信对接的任务已经完成了.这些模块的目标就是,只需填入各类服务的参数,就可以直接进 ...