ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事物_基本演示、事物_自动提交&手动提交

2022-08-02 11:01:08  阅读:163  来源: 互联网

标签:account 演示 -- 事物 李四 提交 balance 500


事物_基本演示

事物的基本介绍

概念:

  如果一个包含多个业务的操作,被事物管理,要么同时成功,要么同时失败

  图解:

    

 

   操作:

    开启事物: start transaction;

    回滚: rollback;

    提交:commit;

 

案例:

    

-- 张三账户-500
UPDATE account set account.balance= balance -500 WHERE name="张三";
-- 李四账户+500
UPDATE account set account.balance= balance +500 WHERE name="李四";

 

 

 假如张三给李四转账的时候 转过去了 但是李四没有收到 那么500元就不翼而飞了 那么这时候就需要使用事物

  

-- 开启事物
START TRANSACTION;
-- 张三账户-500
UPDATE account set account.balance= balance -500 WHERE name="张三" 出错...;

-- 李四账户+500
UPDATE account set account.balance= balance +500 WHERE name="李四";
-- 发现问题是回滚
ROLLBACK;

我故意加一个出错 ,然后使用事物看一下会不会执行成功

 

 并没有执行

那么我们把出错解决了

 


-- 开启事物
START TRANSACTION;
-- 张三账户-500
UPDATE account set account.balance= balance -500 WHERE name="张三" ;

-- 李四账户+500
UPDATE account set account.balance= balance +500 WHERE name="李四";
-- 发现问题是回滚
ROLLBACK;

 

 这次执行成功!

 

事物_自动提交&手动提交

-- 开启事物
START TRANSACTION;
-- 张三账户-500
UPDATE account set account.balance= balance -500 WHERE name="张三" ;

-- 李四账户+500
UPDATE account set account.balance= balance +500 WHERE name="李四";
-- 发现问题是回滚
ROLLBACK;

刚才我们看到 ,没有写提交语句但是也是提交上去了,这就是自动提交 

那么手动提交需要我们手动来写

-- 开启事物
START TRANSACTION;
-- 张三账户-500
UPDATE account set account.balance= balance -500 WHERE name="张三" ;

-- 李四账户+500
UPDATE account set account.balance= balance +500 WHERE name="李四";
-- 发现问题是回滚
ROLLBACK;
-- 提交事物
COMMIT;
这就是手动提交

事物的提交的两种方法

  手动提交:需要先开启事物,在手动提交

  自动提交:sql就是自动提交的

 查看提交方式:

    SELECT @@autocommit
  

 

 如果是一的话 就是自动提交,0的话就是手动提交

 

标签:account,演示,--,事物,李四,提交,balance,500
来源: https://www.cnblogs.com/ssr1/p/16543028.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有