--注意S是共享锁,X是排它锁在连接1中执行begin tran
select * from ticket with(TABLOCKX) where id='BH000001'
waitfor delay '00:00:10'
commit然后再在连接2中执行
begin tran
select * from ticket
commit
select * from ticket with(TABLOCKX) where id='BH000001'
waitfor delay '00:00:10'
commit然后再在连接2中执行
begin tran
select * from ticket
commit
用TABLOCKX 会把整个表锁住,我只想在ID ='BH000001'的这一条记录上加排他锁
也就是说 连接2 中 可以选出ID != 'BH000001' 的任何记录
而且,我用 WITH (ROWLOCK XLOCK),不是加 行级X锁吗
在连接1中执行
begin tran
select * from authors WITH (ROWLOCK XLOCK readpast) where au_id='172-32-1176'
waitfor delay '00:00:10'
commit
在连接2中执行
begin tran
select * from authors WITH (ROWLOCK XLOCK readpast)
commit
你的执行结果看起来确实是我想要的,但是在连接2 中好象又对au_id ='172-32-1176' 以外的所有记录加了xLOCK, 我想要在连接2中 只选出除加了X锁的 au_id ='172-32-1176' 以外的记录,但不对这些记录加X,请教
begin tran
select * from authors WITH (updlock readpast)
commit