Ano – do určité míry.
Jak dlouho SELECT
držení sdíleného zámku závisí na úrovni izolace transakce:
READ UNCOMMITTED
- není získán žádný sdílený zámek -UPDATE
není blokovánoREAD COMMITTED
- sdílený zámek se získává pouze po dobu čtení dat -UPDATE
může být zablokován na velmi krátkou dobuREPEATABLE READ
aSERIALIZABLE
- sdílený zámek je získán a uchováván až do konce transakce -UPDATE
je blokováno, dokudSELECT
transakce končí
Technicky vzato, UPDATE
příkaz nejprve dostane UPDATE
zámek - který je kompatibilní se sdíleným zámkem (jak je používán SELECT
) - po dobu, po kterou načítá aktuální hodnoty řádků, které mají být aktualizovány.
Jakmile to uděláte, Update
lock je eskalován na exkluzivní zámek pro nová data, která mají být zapsána do tabulky.