En manuel, il est dit qu'InnoDB a un verrouillage au niveau de la ligne, alors pourquoi si je sélectionne certaines des lignes avec l'instruction FOR UPDATE
, il ne me laissera pas insérer une nouvelle ligne dans cette table? La nouvelle rangée ne devrait pas être verrouillée après tout, elle n'a pas été sélectionnée.Pourquoi je ne peux pas insérer une nouvelle ligne dans une table partiellement verrouillée dans MySQL 5 InnoDB?
2
A
Répondre
2
Dans InnoDB, une insertion sur une colonne à incrémentation automatique entraîne un verrouillage de table. La sélection d'une ligne FOR UPDATE entraîne un verrouillage de niveau ligne.
Étant donné que vous ne pouvez pas acquérir un verrou de table s'il existe des verrous de ligne, la commande UPDATE empêche l'INSERT tant que sa transaction n'est pas validée.