Se imposti il livello di isolamento della transazione su SERIALIZABLE , InnoDB wil aggiungerà implicitamente LOCK IN SHARE MODE a tutti i SELECT dichiarazioni.
Questa modalità è in conflitto con i blocchi posti da SELECT FOR UPDATE e il SELECT s si bloccherà.
Nota, però, che InnoDB può bloccare più righe di quelle che soddisfano il WHERE condizione. Questo perché blocca tutte le righe scansionate , non solo quelli corrispondenti .
Supponiamo di avere un indice su col1 e questa domanda:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
utilizza questo indice.
Questo bloccherà tutto record con col1 = 1 , anche quelli con col2 <> 2