1 如何锁一个表的某一行A 连接中执行SET TRANSACTION ISOLATION LEVEL REPEATABLE READbegin transelect * from tablename with (rowlock) where id=3waitfor delay '00:00:05'commit tranB连接中如果执行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) 其他事务不能读取表,更新和删除
SET TRANSACTION ISOLATION LEVEL SNAPSHOT select * from tttti ----------- 1(1 行受影响) select * from tttt with(nolock)还要看你更新时候表上是否加了锁。
贴少了 窗口一create table tttt(i int) insert tttt select 1 begin tran update tttt set i=3窗口二 SET TRANSACTION ISOLATION LEVEL SNAPSHOT select * from tttti ----------- 1(1 行受影响) select * from tttt with(nolock) i ----------- 3(1 行受影响)
注意: 锁定数据库的一个表的区别SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
select * from tttti
-----------
1(1 行受影响)
select * from tttt with(nolock)还要看你更新时候表上是否加了锁。
贴少了
窗口一create table tttt(i int)
insert tttt select 1
begin tran
update tttt
set i=3窗口二
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
select * from tttti
-----------
1(1 行受影响)
select * from tttt with(nolock)
i
-----------
3(1 行受影响)