事务

  • 事务( 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. 6┃音视频直播系统之 WebRTC 核心驱动SDP规范协商

    一.什么是SDP SDP(Session Description Protocal)其实就是当数据过来时候,告诉数据自己这里支持的解码方式.传输协议等等,这样数据才能根据正确的方式进行解码使用 SDP ...

  2. SeataAT模式原理

    Seata架构 Seata将分布式事务理解为一个全局事务,它由若干个分支事务组成,一个分支事务就是一个满足ACID的本地事务. Seata架构中有三个角色: TC (Transaction Coord ...

  3. 一起看 I/O | Flutter 3 更新详解

    作者 / Kevin Jamaul Chisholm, Technical Program Manager for Dart and Flutter at Google 又到了 Flutter 稳定版 ...

  4. Public Round #1

    传送门 [PR #1]删数 题意:写的很清楚了,略 思路: 首先转化为差分数组,两个连续数相同,删掉,乘二放进去. 发现能互相转化的两个数,符号,值\(/lowbit\)都一样. 把能相互转化的数归为 ...

  5. Educatinal CF #122(Div. 2) E . Spanning Tree Queries

    这一场其实有重大的意义,因为是除夕跨年,不过我FST掉大分了(ks) 题意:给你一个n点,m条边的带权图,q次询问,每次给你\(x\),每个边权为\(abs(E[i].w-x)\)答案为所有询问最小生 ...

  6. numpy中shape的部分解释

    转载自:https://blog.csdn.net/qq_28618765/article/details/78081959和https://www.jianshu.com/p/e083512e4f4 ...

  7. .net core 抛异常对性能影响的求证之路

    一.前言 在.net 社区中曾经听到过很多关于大量抛异常会影响性能这样的结论,心中一直就存在各种疑问.项目中使用自定义异常来处理业务很爽,但是又担心大量抛业务异常存在性能问题. 查阅了各种文档,微软官 ...

  8. 【题解】Codeforces Round #798 (Div. 2)

    本篇为 Codeforces Round #798 (Div. 2) 也就是 CF1689 的题解,因本人水平比较菜,所以只有前四题 A.Lex String 题目描述 原题面 给定两个字符串 \(a ...

  9. camunda开源版与商业版的差异

    Camunda流程引擎分社区版和企业版,社区版实际上是开源版,是Apache2.0协议,企业版实际上是商业收费版本,需要购买授权才能使用,那么社区版和企业版的差异有哪些呢,社区版本是否能满足我们日常的 ...

  10. 国内外组态软件对比分析(InTouch、WinCC、iFix、iNeuOS)

    在我国自动化控制领域应用较广泛的工业自动化组态软件有Wonderware公司InTouch.西门子公司Wincc.GE公司iFix.国内也有一些传统组态软件厂商,使用的功能和形式基本上十分类似,受当时 ...