首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

多客户端与此同时select top 1怎样取到不同的记录

2013-07-09 
多客户端同时select top 1怎样取到不同的记录?现在的做法是在表中加一个working的boolean值,rs.open sele

多客户端同时select top 1怎样取到不同的记录?
现在的做法是在表中加一个working的boolean值,

rs.open "select top 1 * from table where working = 0", dbc, 1, 3
rs("working") = 1
rs.update

但是还是会出现乐观并发检查失败,取到了同一条记录,rs.update失败(记录已被另一客户端修改)。

如果改成
rs.open "select top 1 * from table where working = 0", dbc, 1, 2
即悲观锁,同样的代码也会出现取到同一条记录的问题,出错是deadlock死锁。

select top 1 * from table where working = 0 for update
这样加for update也不行。

请问应该有没有其它的办法呢?谢谢。
[解决办法]
直接用Update语句啊
dim sSQL as string
sSQL="update table set working=1 where working=0 and 你的其他条件(能找出这一笔的)"
dbc.exec sql

热点排行