MySql下使用事务处理的一个问题。

第一次在MySql中使用事务处理,遇到问题如下:

以在线商城为例,某商品的库存仅剩1件,此时线上有2名顾客对其有购买意向,并先后提交订单,那么通常的处理过程为:

1、检测该商品是否还有库存,如果有则继续
2、向订单表中增加一条记录,表明顾客甲提交了订单。
3、该商品的库存减少1,余数为0,其他顾客无法对该商品进行订购
4、订单流程结束

严谨起见,我打算在步骤1之前开启事务,然后在步骤4后结束事务处理,这都没问题,现在我的疑惑是,在MySql中开启事务处理时,数据库系统是如何处理步骤3中的记录的,是否对其进行了锁定?如果没有锁定,那么如果顾客乙在步骤2、3中间提交了订单的话,会出现什么情况呢?订购了一件已经没有库存的商品?

不知我的描述是否够清晰,请大家指教!

平安夜快乐!

[ 本帖最后由 wyg27 于 2006-12-24 20:26 编辑 ]

作者: wyg27   发布时间: 2006-12-24

事务从第一步就开始锁定了

作者: leo   发布时间: 2006-12-24

引用:
原帖由 leo 于 2006-12-24 18:48 发表
事务从第一步就开始锁定了
谢谢,还想进一步请教一下,当第一部开启事务后,在事务完成前,其他进程连read也被暂时锁定了吗?我翻看MySql的手册其中事务处理部分说的不是很详细,没有十分理解,还请leo多说几句,谢谢。

作者: wyg27   发布时间: 2006-12-24

当然,否则没法保证数据的一致性啊

作者: leo   发布时间: 2006-12-25

引用:
原帖由 leo 于 2006-12-25 09:00 发表
当然,否则没法保证数据的一致性啊
谢谢leo,圣诞快乐。

作者: wyg27   发布时间: 2006-12-25

:lol

作者: leo   发布时间: 2006-12-25