• MySQL 事务


    目录

    TCL语言 

      事务的创建

     事务并发

     演示事务隔离级别


    TCL语言
     


     事务控制语言
      
      事务:一个或者一组sql语句组成一个执行单元,
      这个执行单元要么全部执行,要么都不执行
     
     事务的特点:
        1.原子性:事务是一个不可分割的工作单位
        2.一致性:事务必须使数据库从一个状态,转换成另一个一致性状态
        3.隔离性:一个事务的执行不能被其他事务干扰
        4.持久性:一个事务一旦提交,就是一个永久性的改变 


      事务的创建


        隐式事务:没有明显的开启和结束如delete inserte
        显式:事务又明显的开启结束标致,前提:必须先禁用自动提交
        SET autocommit=0;只对当前的事务有效

      
      步骤 
       1.开启事务 
          SET autocommit=0
       2.编写语句(增删改查)
       3.结束事务
         两种方式
          COMMIT 提交
          ROLLBACK 回归

    案例:转账
     

    1. SET autocommit=0;
    2. START TRANSACTION;#可以写可以不写
    3. UPDATE ACCOUNT SET balance=500 WHERE username=''
    4. UPDATE ACCOUNT SET balance=1500 WHERE username=''
    5. COMMIT;
    6. #rollback


     事务并发


     脏读:1读取了2没有提交的字段,若2回滚则1读取的是临时且无效的数据
     不可重复读:1两次读取一个字段结果不一样
     幻读:插入字段之前读取

    MySQL支持四种隔离级别

    /*                 脏读    不可重复读    幻读
     read uncommitted   1           1         1
     read committed      0          1          1
     repeatable read     0           0         1
     serializable        0           0          0

    */

     演示事务隔离级别

    在MySQL 8.0以上的版本要查看事务隔离级别需要

    select @@transaction_isolation;

    设置隔离级别为最低

     set session transaction isolation level read uncommitted;

    选择库然后开始实验

     

    开启一个事务

    1.在一个命令窗口设置隔离级别最低,同时修改数据,不提交也不回滚

    2.在另一个窗口 开启事务查询表格中所有事务(出现脏读

     

     

  • 相关阅读:
    多叉树构建和排序
    详解border-radius属性
    Codeforces Round 933 (Div. 3) A~D
    Linux下如何配置普通用户的sudo命令权限?
    web需要从文件中读取内容,将内容进行加密上传
    4.mybatis 高级结果查询
    虚拟机Linux如何做快照、备份以及快照的使用
    wasm 视频解码渲染实现
    Vue笔记十一:Vuex基础应用
    Java攻略集合之基础语法
  • 原文地址:https://blog.csdn.net/m0_66057675/article/details/125608618