当前位置:主页>销售管理软件> 列表

对于MSSQL数据库,一张表有网络上的若干人访问(修改,更 找销售库存管理软件

销售管理软件版1楼: 以超市为例:
mssql数据库里有一张销售表,工作时,多个收银操作员都在操作这张表,有添加,也有更新,那问题是:A操作员卖出一件商品,那总库存要减1,而同时B操作员也卖出了同一样商品,如何使总库存里更新后的数据是正确的.
有什么方法来解决多人同时访问同一张的问题?
以table或adotable举例?

2楼: 别用table,用Query或AdoQuery,因为table对表的操作是独占的。
AdoQuery.close
AdoQuery.sql.clear;
AdoQuery.sql.add(''..'')
AdoQuery.exesql
这样就可以 如免费的销售管理软件

3楼: 在设计表时增加一个字段
比如值为0时,可以修改,删除,增加
值为1时,只能增加

4楼: 首先取出库存判断是否大于一个基数(这个基数对于所卖商品来定)
如果大于的话,就在操作员确定卖这个商品时减库存
如果小于的话,就在操作员选择这个商品的时候就把库存减了,
这时,若顾客交钱就确定减库存,不交钱了就把库存加回去.
存在问题:
如果只有一个,两个顾客同时有意想要买,怎么取.

如果先取库存,存在顾客最后决定不买了,别的顾客就买不上了
如果后取库存,存在两个顾客同时买最后一件商品,库存没了

对商品设定下限,应该可以解决这个问题.



我同事办法

在处理数据时对操作员编号
减库存时按照编号顺序处理
即可


处理方法没有经过实践
理论结果,如果有结果通知我下

5楼: 我的意思大家好象没有理解。
我的意思是:以超市为例,有三个收银台,如何保证库存量的正确。比如,A收银员卖了一件毛衣,同时B收银员也卖了一件,他们处理的都是一张表,如何保证?我说的是同时!A把库存减1,但还没存到表里,此时B也操作这张表,使其减1,此时库存可能不对?怎么解决/。

6楼: 好象出现这种几率的可能性很小吧
说没有有点不现实但是确实很小
对库存操作只是UPDATE的那一刻
两个人同时UPDATE,很难,虽然有
不过,暂时还没办法解决。


如果找到好的办法,告诉我一声,我这里碰到过同时UPDATE的问题
还没找到好的解决办法。
呵呵,谢!

销售管理软件版7楼: 在增加和删除时先查询做判断。修改时不必了。只是不知道谁最后一个改的

8楼: 用事务控制就可以解决问题
如果楼主不知道什么是事务可以看看MSSQL的联机丛书

9楼: 事务控制只是一种方法而已,但不能解决此问题,我总不能发生错误时不对库存处理吧,而且如果这种几率非常大,那库存永远更新不了,用事物根本解决不了问题。
大的超市,几个收银台,同时操作,这种情况肯定经常发生,人家怎么解决的?

10楼: 还是要用事务+锁机制
另外,超市的东西不是那么容易就卖光的

11楼: 建议使用事务,这东西味道不错

12楼: MSSQL本身具有并发控制功能,这些工作由数据库来完成! 如销售库存管理软件

13楼: 可以放在存储过程中实现,删减顺序让数据库服务器来控制.

销售管理软件版14楼: 不仅仅超市如此,B/S型,多人在线,多人同时访问也遇到此问题,具体如何解决,给个具体的解决方案

15楼: 有好的解决办法帮发一个gongzuobuhaozhao@163.com

16楼: 大家在开发多用户或者b/s版本的软件时候,不会不对多人同时访问数据库进行处理吧?
我提的这个问题比较常见,如你的网站的注册,也许你只考虑了一个人注册,实际上当有两个人同时提交注册内容时,问题就来了..
不知道大家怎么考虑的/
前面有人说,关系型数据库自行处理?
事务是一方面,但出错总不能老回滚,除非让用户从新注册?

17楼: 楼主还在以本地数据库如foxpro、access等数据编程规则来考虑问题,其实,这些问题在关系型数据库如sql server中都已经考虑好了,我们真正要控制的就是事务和避免死锁。

其它就不多说了。祝大家新年愉快!

18楼: 这个问题是不存在的,因为 MSSQL 在修改操作时会自动加锁,直到 Commite 后才解开,
因此不会发生两个人同时操作的问题,除非你使用 VF 之类的数据库。

19楼: 楼上的两位,能具体点么?

20楼: MSSQL 在进行 Update 操作时,会自动对该行(要sql 7以上版本)加锁,当提交完成
后,才解锁,如果在未提交前进行 Select 操作时应采用 Select * from XX with(nolock)
返回的是 修改前的数据,两个人进行修改操作时,必然有先后,这时后面的人必须等待前
一个操作完成后才能进行。

销售管理软件版21楼: 谢谢。