Pokud nastavíte úroveň izolace transakcí na SERIALIZABLE , InnoDB wil implicitně připojit LOCK IN SHARE MODE všem SELECT prohlášení.
Tento režim je v konfliktu se zámky umístěnými pomocí SELECT FOR UPDATE a SELECT s se uzamkne.
Všimněte si však, že InnoDB může zamknout více řádků, než vyhovuje WHERE stav. Je to proto, že zamyká všechny naskenované řádky , nejen ty shodné .
Řekněme, že máte index na col1 a tento dotaz:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
používá tento index.
Tímto uzamknete vše záznamy s col1 = 1 , dokonce i ty s col2 <> 2