事物_基本演示、事物_自动提交&手动提交
事物_基本演示
事物的基本介绍
概念:
如果一个包含多个业务的操作,被事物管理,要么同时成功,要么同时失败
图解:
操作:
开启事物: 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的话就是手动提交