• Mysql事务


    事务简介

    数据库的事务(Transaction) 是一种机制、一个操作序列,包含了一组数据库操作命令。

    事务把所有命令作为写一个整体向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。

    事务是一个不可分割的工作逻辑单元

    开启事务   Start Transaction; 或者begin

    提交事务  commit

    回滚事务  rollback

    例如实现转账操作, 模拟用户a向用户b转账 500元

    先准备好要测试的数据

    1. -- 事务
    2. -- 创建表进行测试
    3. CREATE table if not EXISTS employee(
    4. e_id int(5) PRIMARY KEY,
    5. e_name VARCHAR(10) comment'员工名称',
    6. e_money int(10)
    7. );
    8. select * from employee;
    9. -- 添加两条测试数据
    10. INSERT INTO employee VALUES(1,'张三',1000),(2,'李四',1000);

    先不用事务写,如果程序出异常,上面的执行了,下面的就没有执行

       张三:500 李四:1000

    1. -- 先不用事务模拟 张三给李四转账500
    2. -- 张三减钱
    3. UPDATE employee set e_money=e_money-500 WHERE e_name='张三';
    4. 这里瞎写让程序出bug
    5. -- 李四加钱
    6. UPDATE employee SET e_money=e_money+500 WHERE e_name='李四';
    7. -- 把钱复原
    8. UPDATE employee set e_money=1000;

    用事务的方式写(出错后只是临时更改了数据,你在新建一个窗口查也是查不到的,一回滚事务,数据就会复原,只有提交事务,数据才会被真正的更改)

    1. -- 利用事务的方式写
    2. -- 开启事务
    3. BEGIN;
    4. -- 张三减钱
    5. UPDATE employee set e_money=e_money-500 WHERE e_name='张三';
    6. 这里瞎写让程序出bug
    7. -- 李四加钱
    8. UPDATE employee SET e_money=e_money+500 WHERE e_name='李四';
    9. -- 如果出异常就回滚事务(回滚到开启事务之前)
    10. rollback;
    11. -- 没错误就提交事务
    12. COMMIT;

    事务的四大特征

    原子性(Atomicity) 事务是不可分割的最小操作单位,要么同时成功,要么同时失败

    一致性(Consistency) 事务完成时,必须使所有的数据保持一致状态

    隔离性(isolation) 多个事务之间,操作的可见性

    持久性(Durability) 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

    Mysql事务默认自动提交

    查看事务的默认提交方式1为自动提交  0为手动提交

    1. -- 查询事务默认提交的方式 1自动提价 0为手动提交
    2. SELECT @@AUTOCOMMIT;
    3. -- 修改事务为手动提交
    4. set @@AUTOCOMMIT =0;

    如果采用手动提交,临时修该,自己的窗口查询是可以发生改变的,但是别人的窗口是查询不到变化得,用了commit命令,才算真正的修改

  • 相关阅读:
    力扣每日一题:1822:数组元素积的符号【模拟思维题】
    Docker的运用场景 103.53.124.2
    HTML5 新表单元素详解
    嵌入式开发:为可重用软件模块设计接口的5个技巧
    DBever SQL编辑器的高级应用:如何用变量快速查询
    【三维重建】摄像机几何
    spring 5.1.x 本地构建 build.gradle文件配置
    pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列、将时间差(timedelta对象)与特定时间长度进行比较
    Web前端培训:如何在ReactJS中更快地开发UI
    DolphinScheduler——介绍及架构设计
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/126077709