怎么查询表中满足条件的所有数据, 并锁定其中一行数据

如何查询表中满足条件的所有数据, 并锁定其中一行数据
怎么查询表中满足条件的所有数据, 并锁定其中一行数据
主要就是实现
程序共四个帐号,每一个账号只能由一个用户使用,有其他思路请 指点
先谢啦 

------解决思路----------------------
假设你的事务隔离级别是默认的read committed,如果只是查询,不修改签到标记,可以使用table hint:
SELECT TOP 1 ID FROM A WITH (UPDLOCK, READPAST) WHERE 签到标记 = 0

这样做的效果是:
(1) 程序会去寻找一个未使用的账户的记录,并对其加更新锁(UPDLOCK),这样其它的进程就无法对它也加更新锁。
(2) 当程序读取到一条已经被其它进程加锁的记录时会自动跳过(READPAST)。
(3) 如果所有的帐户都已经被使用或被其它进程锁定,那么查询结果集为空。

如果你直接修改签到标记,那么一条UPDATE语句就可以了。

DECLARE @account_id INT

UPDATE TOP 1 A
SET 签到标记 = 1
,   @account_id = id
WHERE 签到标记 = 0

然后把@account_id的值返回就可以了。