Tak - do pewnego stopnia.
Jak długo SELECT utrzymuje wspólną blokadę zależy od poziomu izolacji transakcji:
READ UNCOMMITTED- w ogóle nie nabyto wspólnej blokady -UPDATEnie jest zablokowanyREAD COMMITTED- blokada współdzielona jest pobierana tylko na czas odczytu danych -UPDATEmoże zostać zablokowany na bardzo krótki czasREPEATABLE READiSERIALIZABLE- blokada współdzielona zostaje nabyta i utrzymywana do końca transakcji -UPDATEjest zablokowany do momentuSELECTtransakcja się kończy
Technicznie rzecz biorąc, UPDATE instrukcja najpierw otrzymuje UPDATE lock - który jest kompatybilny z blokadą współdzieloną (używaną przez SELECT ) - przez czas, w którym odczytuje bieżące wartości aktualizowanych wierszy.
Gdy to zrobisz, Update blokada jest eskalowana do wyłącznej blokady dla nowych danych, które mają zostać zapisane w tabeli.