Ja - tot op zekere hoogte.
Hoe lang een SELECT vasthouden aan een gedeeld slot is afhankelijk van het isolatieniveau van de transactie:
READ UNCOMMITTED- er wordt helemaal geen gedeeld slot verkregen -UPDATEis niet geblokkeerdREAD COMMITTED- gedeelde vergrendeling wordt alleen verkregen voor de duur van het lezen van de gegevens -UPDATEkan voor een zeer korte periode worden geblokkeerdREPEATABLE READenSERIALIZABLE- gedeelde vergrendeling wordt verkregen en vastgehouden tot het einde van de transactie -UPDATEwordt geblokkeerd totdat deSELECTtransactie eindigt
Technisch gezien is de UPDATE statement krijgt eerst een UPDATE slot - dat compatibel is met een gedeeld slot (zoals gebruikt door de SELECT ) - voor de duur van de tijd terwijl het de huidige waarden leest van de rijen die moeten worden bijgewerkt.
Zodra dat is gebeurd, wordt de Update lock wordt geëscaleerd naar een exclusieve lock voor de nieuwe gegevens die naar de tabel moeten worden geschreven.