多客户端同时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