Ja - till viss del.
Hur länge en SELECT håller fast vid ett delat lås beror på isoleringsnivån för transaktionen:
READ UNCOMMITTED- inget delat lås förvärvas alls -UPDATEär inte blockeradREAD COMMITTED- delat lås förvärvas bara för att läsa data -UPDATEkan vara blockerad under en mycket kort tidREPEATABLE READochSERIALIZABLE- delat lås förvärvas och hålls kvar till slutet av transaktionen -UPDATEär blockerad tillsSELECTtransaktionen avslutas
Tekniskt sett är UPDATE satsen får först en UPDATE lås - som är kompatibelt med ett delat lås (som används av SELECT ) - under den tid som den läser av de aktuella värdena för raderna som ska uppdateras.
När det är gjort visas Update låset eskaleras till ett exklusivt lås för att den nya datan ska skrivas till tabellen.