Да - до известна степен.
Колко дълго SELECT
държи на споделена ключалка зависи от нивото на изолация на транзакцията:
READ UNCOMMITTED
- изобщо не се придобива споделена ключалка -UPDATE
не е блокиранREAD COMMITTED
- споделеното заключване се придобива само за времето на четене на данните -UPDATE
може да бъде блокиран за много кратък период от времеREPEATABLE READ
иSERIALIZABLE
- споделеното заключване е придобито и задържано до края на транзакцията -UPDATE
е блокиран доSELECT
транзакцията приключва
Технически, UPDATE
операторът първо получава UPDATE
заключване - което е съвместимо със споделено заключване (както се използва от SELECT
) - за времето, докато чете текущите стойности на редовете, които трябва да се актуализират.
След като това стане, Update
заключване се ескалира до изключително заключване за новите данни, които да бъдат записани в таблицата.