+ -
当前位置:首页 → 问答吧 → 如何 防止多台电脑同时处理同一记录

如何 防止多台电脑同时处理同一记录

时间:2011-12-01

来源:互联网


有一个表aa,假定有a,b,c三个字段. 三条记录,如下所示.

序号 字段1 状态
1 aa 未处理
2 bb 未处理
3 cc 未处理

命令如下
begin tran
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
declare @id int
select top 1 @id=序号 from aa where 状态='未处理' order by 序号 
update aa set c='处理中' where 序号=@id
select @id  
commit tran 
多台电脑同时会处理aa表中的数据,通过"状态"来判断该记录是否正在被其它电脑处理中,并返回一条自己锁定的记录号,

主要是防止多台电脑同时处理同一记录.

以上程序能实现吗? (我对锁不大了解.)因为这个不好测试.所以请问各人大虾!

作者: group333   发布时间: 2011-12-01

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED  

设置隔离方式为读未提交?

作者: fredrickhu   发布时间: 2011-12-01

把那句 set 去掉试试.

作者: qianjin036a   发布时间: 2011-12-01