hello,这里是东哥。这节课,我们要学习的是,「长乐未央全栈系列:Node.js 项目实践」课程的第 72 回,进阶:数据库的乐观锁,在这节课里,我们将探讨:
- 如果有多个事务修改同一条记录会怎样?
- 乐观锁是什么?
- 如何在 Node 项目中实现乐观锁?
多个事务修改同一条记录
在上节课里,我们介绍了数据库事务的用法。但是现在的代码,依然不够完善,我们先看两个小例子,再来分析之前写代码
例一:库存问题
例如有个商品表,里面有个库存字段。刚好这个商品现在只有1
件了,这时候两个人同时下单。但是因为事务还没有提交,就会造成库存的错误判断。大家看这个表格:
事务一:A 下单 |
事务二:B 下单 |
查询商品库存:1 件 |
|
|
查询商品库存:1 件 |
判断商品库存 > 0,继续执行 |
|
|
判断商品库存 > 0,继续执行 |
更新商品库存:1 - 1 = 0 件 |
|
|
更新商品库存:1 - 1 = 0 件 |
提交事务,库存:0 件 |
|
|
提交事务,库存:0 件 |