日期:2014-05-17  浏览次数:20488 次

SQL好像用锁表了,也有问题呢??
我有一个这样的例子,多人操作一个数据库的订单,出货单,待发单。录入出货单的时候会去看数量是否超过订单了,超过了就不能录入,反之就能录入数据,并把订单数量-出货数量的值存入待发表中。现在出现这个问题,待发会有负数的产生。我想可能是脏读了,比如有人在录订单,另外一个人在去读这个,然后结果是不对的一个值去减出货单,造成待发出现负数了。
我是这样处理的,我把这些表在录入订单和出货单的时候全部以tablock的形式锁表,但是还是会出现负数的可能,大侠们帮帮嘛啊~~~怎么才能解决这个多人操作数据库。造成幻读,脏读等呢。

------解决方案--------------------
提高隔离级别,只有可序列化和快照可以避免脏读、幻读,但是会降低并发性,这些要衡量,