Maison > Article > base de données > A quoi sert la mise à jour dans MySQL
L'utilisation de for update dans MySQL est "select * from table which...for update" ; l'utilisation de for update peut ajouter un verrou exclusif à la ligne pendant la requête. Lorsqu'une opération de transaction n'est pas terminée, d'autres transactions peuvent lire Récupéré. mais ne peut pas être écrit ou mis à jour.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
Si vous rencontrez un scénario avec une concurrence élevée et des exigences élevées en matière de précision des données, vous devez comprendre et utiliser for update. La fonction de
for update est d'ajouter un verrou exclusif à la ligne lors d'une requête lorsqu'une opération de transaction n'est pas terminée, les autres transactions peuvent lire mais ne peuvent pas écrire ou mettre à jour. Par exemple, lorsqu'il s'agit d'argent, d'inventaire, etc. Généralement, ces opérations sont une longue série et démarrent une transaction. Si l'inventaire est à 1 lors de sa première lecture et qu'un autre processus met immédiatement à jour l'inventaire à 0 et que la transaction n'est pas encore terminée, les mauvaises données continueront à être exécutées et il y aura des problèmes. Par conséquent, la mise à jour est nécessaire pour verrouiller les données afin d'éviter les erreurs de données en cas de concurrence élevée. N'oubliez pas un principe : un verrou, deux jugements, trois mises à jour2. Comment utiliser pour la mise à jour
Position d'utilisation :
select * from table where xxx for update
3. La table de verrouillage pour la mise à jour
InnoDB est par défaut au niveau de la ligne. verrous Lorsqu’il existe une clé primaire explicitement spécifiée, il s’agit d’un verrou au niveau de la ligne. Sinon c'est au niveau de la table.
Exemple : supposons que la table foods comporte trois champs : id, name et status id est la clé primaire et status a un index. Exemple 1 : (Spécifiez explicitement la clé primaire, et il y a cet enregistrement, verrouillage au niveau de la ligne)SELECT * FROM foods WHERE id=1 FOR UPDATE; SELECT * FROM foods WHERE id=1 and name=‘码农编程进阶笔记’ FOR UPDATE;Exemple 2 : (Spécifiez explicitement la clé primaire/l'index, s'il n'y a pas un tel enregistrement, pas de verrouillage)
SELECT * FROM foods WHERE id=-1 FOR UPDATE;Exemple 3 : (Pas de clé primaire/index, verrouillage au niveau de la table)SELECT * FROM foods WHERE name='Coder Programming Advanced Notes' FOR UPDATE ;Exemple 4 : (Clé primaire/index peu clair, verrouillage au niveau de la table )
SELECT * FROM foods WHERE id<>‘3’ FOR UPDATE; SELECT * FROM foods WHERE id LIKE ‘3’ FOR UPDATE;
4.for Notes sur la mise à jour
1 pour la mise à jour ne s'applique qu'à InnoDB, et les transactions doivent être activées pour prendre effet entre le début et la validation.
2. Pour tester la situation de verrouillage de la table pour la mise à jour, vous pouvez utiliser le mode commande de MySQL pour ouvrir deux fenêtres à des fins de test. Apprentissage recommandé :Tutoriel vidéo mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!