其他分享
首页 > 其他分享> > 事物_基本演示、事物_自动提交&手动提交

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

作者:互联网

事物_基本演示

事物的基本介绍

概念:

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

  图解:

    

 

   操作:

    开启事物: 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