如何锁表和锁表中的某一行

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

 

你可能感兴趣的:(锁表)