MySql下使用事务处理的一个问题。
第一次在MySql中使用事务处理,遇到问题如下:
以在线商城为例,某商品的库存仅剩1件,此时线上有2名顾客对其有购买意向,并先后提交订单,那么通常的处理过程为:
1、检测该商品是否还有库存,如果有则继续
2、向订单表中增加一条记录,表明顾客甲提交了订单。
3、该商品的库存减少1,余数为0,其他顾客无法对该商品进行订购
4、订单流程结束
严谨起见,我打算在步骤1之前开启事务,然后在步骤4后结束事务处理,这都没问题,现在我的疑惑是,在MySql中开启事务处理时,数据库系统是如何处理步骤3中的记录的,是否对其进行了锁定?如果没有锁定,那么如果顾客乙在步骤2、3中间提交了订单的话,会出现什么情况呢?订购了一件已经没有库存的商品?
不知我的描述是否够清晰,请大家指教!
平安夜快乐!
[ 本帖最后由 wyg27 于 2006-12-24 20:26 编辑 ]
以在线商城为例,某商品的库存仅剩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 发表事务从第一步就开始锁定了
作者: wyg27 发布时间: 2006-12-24
当然,否则没法保证数据的一致性啊
作者: leo 发布时间: 2006-12-25
引用:
原帖由 leo 于 2006-12-25 09:00 发表当然,否则没法保证数据的一致性啊
作者: wyg27 发布时间: 2006-12-25
:lol
作者: leo 发布时间: 2006-12-25