• 二十四、MySQL事务操作演示


    1、事务

    (1)事务简介:

    (2)实际操作方式:

            在执行MySQL语句时,系统默认自动提交,但是语句一旦出现报错,就可能导致数据出现大规模错误,所以我们要做的就是,将自动提交方式改为手动提交方式。

            在改为手动提交之后,如果执行语句出现错误,数据库数据也不会发生更改,需要操作者确认提交,数据库数据才会发生更改。

    (3)查看当前提交方式:

    1. 查看当前提交方式:
    2. select @@autocommit;

    2、操作案例:

            建立一个数据库,存放着jom和kom的存款数据,jom存款10000元,kom存款5000元,现在jom给kom转账1000元,执行操作语句如下:

     3、修改提交方式(方式一)

    (1)错误语句:

    此时为自动提交方式:

            在这个错误语句中,第三条SQL语句不能正常执行,但前两条语句已经执行,这将导致jom的账户余额变为9000元,kom的账户余额不会发生改变。

    (2)手动提交:

            在(1)中,这样的错误是十分致命的,这将会导致数据的严重缺失,所以将提交方式设置为手动提交是必要的。

    1. 将提交方式设置为手动提交
    2. set @@autocommit=0;

    (3)手动提交示例:

            执行如下语句:

    1. select * from account where name='jom';
    2. update account set money=money-1000 where name='jom';
    3. update account set money=money+1000 where name='kom';

            再次执行(1)中错误语句之后,然后再去刷新数据库,发数据库的数据并不会发生改变,这时需要执行commit;语句,数据才会发生改变。

    1. 提交数据:
    2. commit

            执行结果:

    (4)回滚操作:

    回滚语句:

    1. 回滚操作:
    2. rollback;

     

    4、修改提交方式(方式二) 

    (1)手动提交:

    (2) 提交方式:

    在这种提交方式中,不需要设置commit参数,只需要执行如下语句即可:

    1. # 第一步,开启事务
    2. start transaction ;

    (3)实际操作:

    1. # 方式二:
    2. # 第一步,开启事务
    3. start transaction ;
    4. # 第二部,执行指令
    5. select * from account where name='jom';
    6. update account set money=money-1000 where name='jom';
    7. 程序执行报错 ...
    8. update account set money=money+1000 where name='kom';
    9. select @@autocommit;
    10. # 第三步,提交事务
    11. commit;
    12. # 第四步,回滚事务,结束当前事务
    13. rollback;

  • 相关阅读:
    并查集理论及常见面试题
    draw.io 绘图软件导出png 图片的几个技巧
    【毕业设计源码】基于java的房地产企业销售信息管理系统
    什么是热阻?
    大模型架构创新已死?
    【Pytorch Lighting】第 3 章:使用预训练模型进行迁移学习
    vue 常用指令
    Unity离线文档使用技巧(打开慢,查找慢的问题)
    Oracle 慢查询排查步骤
    c高级day2 linux指令的补充和shell脚本
  • 原文地址:https://blog.csdn.net/2301_79149013/article/details/133241233