• 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命令,才算真正的修改

  • 相关阅读:
    【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器
    springboot项目面试题
    关于#r语言#的问题:有没有随机多属性可接受性分析(SMAA)的R语言代码
    记录一下自行安装RabbitMQ的步骤
    Web时代下,软件系统的持续进步,是否能完全替代人力节省成本?
    工欲善其事,必先利其器,Markdown和Mermaid的梦幻联动(2)
    18.1 new、delete进一步认识
    CSS 中几种常用的换行方法
    从MVC到DDD,该如何下手重构?
    一、【redux】redux简介 mini版求和Demo
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/126077709