测试事务实现转账

-- =========================事务==============================


-- mysql是默认开启事务自动提交的
set autocommit=0  -- 关闭
set autocommit=1  -- 开启(默认的)


-- 手动处理事务
set autocommit=0   -- 关闭自动提交


-- 事务开启
start transaction -- 标记一个事务的开始,从这个之后的sql都在同一个事务内

insert xx
insert xx

-- 提交:持久化(成功!)
commit

-- 回滚:回到原来的样子(失败!)

rollback

-- 事务结束

set autocommit=1  -- 开启自动提交



-- 了解
savepoint 保存点名  -- 设置一个事务的保存点
rollback to savepoint 保存点名 -- 回滚到保存点
release savepoint 保存点名   -- 撤销保存点

 

 

-- 模拟转账:事务
SET autocommit = 0; -- 关闭自动提交
START TRANSACTION -- 开启一个事务(一组事务)


UPDATE ACCOUNT SET money=money-500 WHERE `name` ='A'   -- A减500
UPDATE ACCOUNT SET money=money+500 WHERE `name` ='B'   -- B加500

COMMIT    -- 提交事务,就被持久化了!
ROLLBACK;   -- 回滚

SET autocommit=1;   -- 恢复默认值

  图像帮助理解:

 

 

posted @ 2021-09-25 09:29  屯子里唯一的架构师  阅读(50)  评论(0编辑  收藏  举报