Blokowanie jest niejawne, tak, ale nie jest wykonywane przez executeUpdate()
. Silnik pamięci w MySQL obsługuje blokowanie i odblokowywanie.
Za każdym razem, gdy piszesz do tabeli MyISAM, twoje zapytanie czeka, aż blokada zapisu w tabeli będzie dostępna, blokada zapisu zostaje nabyta, zapis jest zakończony, a blokada zapisu zostaje zwolniona. W MyISAM nie ma rzeczywistej współbieżności zapisu, ponieważ w rzeczywistości każdy pracownik czeka w kolejce na blokadę zapisu. Nie pojawia się błąd, ponieważ żądania zapisu są serializowane.
Sytuacja z InnoDB jest podobna, ale bardzo inna, ponieważ InnoDB blokuje tylko część tabeli, zwykle na poziomie wiersza, gdzie InnoDB może zablokować zakres w indeksie, blokując w ten sposób wiersze w tym zakresie w indeksie (a poprzedzająca je luka). To blokowanie jest bardziej szczegółowe niż blokowanie tabeli, co umożliwia lepsze zachowanie współbieżności, ale nie ma jednoczesnej operacji na tym samym wierszu — każdy pracownik czeka na blokadę lub blokady, których potrzebuje.
W obu przypadkach blokady są brane domyślnie.