SQL Server 如何锁一个表的某一行 - MS-SQL Server / 基础类

 

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) 
其他事务不能读取表,更新和删除

posted @ 2011-03-21 17:43  笑萧亦然  阅读(563)  评论(0编辑  收藏  举报