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
DDDoriginal
2025-01-24 02:52:09836parcourir

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 :

<code class="language-sql">INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
NAME="A", AGE=19</code>
  • 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:
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