这样如何避免?
多人操作库存,如何避免保存时库存不足。
问题点数:20、回复次数:7Top
1 楼azsoft(Try my best)回复于 2003-12-03 20:18:35 得分 0
大力呢?Top
2 楼ljma(rick)回复于 2003-12-03 22:06:14 得分 10
是说的库存数量吧, 设计修改库存数量时加上条件,如数量为qty, 则where qty-xxx(要减的值)>=0, 判断结果,没有修改记录则说明库存不足。Top
3 楼pengdali()回复于 2003-12-03 22:13:26 得分 10
create table #锁表(编号 int)
--代码:
if exists(select 1 from 编号='你的编号')
return
insert #锁表 values('你的编号')
.....你处理的代码
delete #锁表 where 编号='你的编号'
Top
4 楼pengdali()回复于 2003-12-03 22:13:38 得分 0
1 如何锁一个表的某一行
A 连接中执行
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
select * from tablename with (rowlock) where id=3
waitfor delay '00:00:05'
commit tran
B连接中如果执行
update tablename set colname='10' where id=3 --则要等待5秒
update tablename set colname='10' where id<>3 --可立即执行
2 锁定数据库的一个表
SELECT * FROM table WITH (HOLDLOCK)
注意: 锁定数据库的一个表的区别
SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
Top
5 楼azsoft(Try my best)回复于 2003-12-03 22:49:37 得分 0
不用锁定记录,如何实行呢。
比如 客户端再写入数据时,先批量存入临时表,然后在批量存入库存表时进行判断,
去掉临时表中的大于库存的值,返回结果再通知给客户端。
这样行吗?
Top
6 楼pengdali()回复于 2003-12-03 22:55:42 得分 0
你这样
create table #锁表(编号 int)
--代码:
if exists(select 1 from 编号='你的编号')
return
insert #锁表 values('你的编号')
.....你处理的代码
delete #锁表 where 编号='你的编号'
这样不是更好。
Top
7 楼azsoft(Try my best)回复于 2003-12-03 23:26:44 得分 0
你上面的代码,在取库存值的时候,如何处理?
这样处理呢?
如:在库存表里建一个 ykc int 字段,下一个客户端在使用时就会去判断(sl-ykc)
也就是该客户端只能使用(sl-ykc)的值,然后保存到库存表里
现在有一个问题,在客户修改记录时 ykc的值也要响应增减,客户端多的情况下,
ykc 的值不好确定。Top




