数据库PUBS中的authors表,想锁定CITY为aaa的记录,为什么执行下面的命令后,CITY为bbb的记录也被锁定了,无法进行UPDATE.BEGIN TRANSACTION
select * from authors with (HOLDLOCK) where city='aaa' 如何才能锁定CITY为AAA的记录,而且CITY为BBB的记录依然能SELECT和UPDATE?新手先谢过了。
select * from authors with (HOLDLOCK) where city='aaa' 如何才能锁定CITY为AAA的记录,而且CITY为BBB的记录依然能SELECT和UPDATE?新手先谢过了。
sql的锁定默认是行级的, 如果你的资源不足, 也可能导致自动升级为页级甚至表级锁, 这样会导致更多的记录被锁定
BEGIN TRANSACTION
select * from authors with (HOLDLOCK) where city='aaa' 然后在查询分析器里UPDATE的
select * from authors with (READPAST) where city='bbb' 如果读不出数据, 则应该是我说的第2种情况.
应该不是被锁住, 应该只是检索数据的时候, 需要从aaa的记录扫描到bbb的记录, 而aaa被锁住了, 所以扫描无法往下进行, 这样看起来似乎就是bbb也被锁住了.这种情况应该怎么解决那? 谢谢
指定索引用类似下面的语句:select * from xx with(hdldlock, index=索引名)update a set xx = xx
from xx with(index=索引名)
当然, 要保证仅扫描索引就可以定义到记录.