Maison > base de données > tutoriel mysql > Comment gérer les contraintes de clé uniques lors de l'insertion ou de la mise à jour dans MySQL ?

Comment gérer les contraintes de clé uniques lors de l'insertion ou de la mise à jour dans MySQL ?

DDD
Libérer: 2025-01-24 02:52:09
original
891 Les gens l'ont consulté

How to Handle Unique Key Constraints When Inserting or Updating in MySQL?

Insérer ou mettre à jour en utilisant des contraintes de clé uniques dans MySQL

L'insertion ou la mise à jour de lignes dans une table MySQL peut être délicate lorsque vous devez gérer des contraintes de clés en double. Pour résoudre ce problème, MySQL fournit l'instruction polyvalente "INSERT ... ON DUPLICATE KEY UPDATE".

Comme indiqué dans la question, vous souhaitez insérer une ligne dans une table avec une clé unique. Toutefois, si une ligne avec la même clé unique existe déjà, vous souhaitez mettre à jour sa valeur.

Traditionnellement, l'insertion d'une ligne violerait une contrainte de clé unique, entraînant un message d'erreur. "INSERT IGNORE" supprime les erreurs mais n'effectue pas d'opération de mise à jour.

Solution : INSÉRER... SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE

La solution réside dans l'utilisation de la syntaxe "INSERT ... ON DUPLICATE KEY UPDATE". Décomposons cette requête à l'aide de l'exemple fourni :

INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
NAME="A", AGE=19
Copier après la connexion
  • INSERT INTO : S'il n'existe aucune clé en double, insère une nouvelle ligne dans la table spécifiée ("nom_table").
  • (ID, NAME, AGE): Spécifie les colonnes à remplir dans la nouvelle ligne.
  • VALUES(1, "A", 19): Fournit les valeurs à insérer.
  • SUR ​​MISE À JOUR DE CLÉ EN DOUBLE :Pièce clé. Si une ligne avec la même valeur pour la clé unique (dans ce cas « ID ») existe déjà dans la table, l'opération de mise à jour est déclenchée.
  • NAME="A", AGE=19: Spécifie le champ à mettre à jour et sa nouvelle valeur.

Instructions :

Si la ligne avec ID=1 n'existe pas dans le tableau, une nouvelle ligne sera insérée en utilisant la valeur fournie. Cependant, si une ligne avec ID=1 existe déjà, seules les colonnes « NAME » et « AGE » seront mises à jour avec les valeurs spécifiées et « ID » restera inchangé.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal