事务测试转账

事务思路图:

 

 

复制代码
 1 -- mysql 是默认开启事务自动提交的
 2 SET autocommit=0 -- 关闭
 3 SET autocommit=1 -- 开启(默认的)
 4 
 5 -- 手动处理事务
 6 START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内
 7 
 8 INSERT xxx
 9 INSERT xxx
10 
11 -- 提交:持久化(成功)
12 COMMIT 
13 -- 回滚:回到原来的样子(失败)
14 ROLLBACK
15 
16 -- 事务结束
17 SET autocommit=1 -- 开启自动提交
18 
19 -- 了解
20 SAVEPOINT 保存点名 -- 设置一个事务的保存点   比如小时候玩游戏,死了之后又从死的那一关开始玩
21 ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保存点
22 RELEASE SAVEPOINT 保存点名 -- 撤销保存点
复制代码

模拟转账:

复制代码
 1 CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci
 2 USE shop
 3 CREATE TABLE man (
 4  `id` INT(3) NOT NULL AUTO_INCREMENT,
 5  `name` VARCHAR(20) NOT NULL,
 6  `money` DECIMAL(9,2) NOT NULL,
 7  PRIMARY KEY (`id`)
 8  )
 9  
10  INSERT INTO man (`name`,`money`)
11  VALUES ('a',2000.000),
12  ('b',10000.00)
13 
14 -- 模拟转账:事务
15 SET autocommit = 0  -- 关闭自动提交
16 START TRANSACTION -- 开启一个事务
17 
18 UPDATE man SET money=money-500 WHERE `name`='a'   -- a 减500
19 UPDATE man SET money=money+500 WHERE `name`='b'   -- b 加500
20  
21 COMMIT  -- 事务提交  一致性,事务一但提交不可逆
22 ROLLBACK -- 事务回滚
23 
24 SET autocommit = 1  -- 打开自动提交
复制代码

 

posted on   Love&Share  阅读(59)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示