Que fait INSERT ON DUPLICATE KEY UPDATE dans MySQL ?

Que Fait Insert On Duplicate Key Update Dans Mysql



Lorsqu'ils travaillent avec une base de données MySQL, les utilisateurs peuvent parfois rencontrer une erreur de violation de clé en double lorsqu'ils tentent d'insérer un nouvel enregistrement dans une table. Cette erreur se produit lorsqu'une ligne avec la même clé primaire ou clé unique existe déjà. Cependant, ce problème peut être résolu en mettant à jour les enregistrements existants avec les nouvelles valeurs. Dans de tels cas, l'activation du ' INSÉRER SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE ” fonctionnalité résoudra efficacement ce problème.

Cet article montrera ce qu'est 'INSERT ON DUPLICATE KEY UPDATE' et comment cela fonctionne dans MySQL.







Que fait INSERT ON DUPLICATE KEY UPDATE dans MySQL ?

Dans MySQL, le INSÉRER SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE est une fonctionnalité avancée de l'instruction INSERT qui combine deux fonctionnalités en une seule opération. Par exemple, il insère un enregistrement dans une table spécifique si l'enregistrement donné n'existe pas déjà. Cependant, si l'enregistrement souhaité existe déjà, il mettra à jour l'enregistrement existant avec la nouvelle valeur.



Pour activer la fonctionnalité INSERT ON DUPLICATE KEY UPDATE, les utilisateurs doivent suivre la syntaxe ci-dessous :



INSÉRER DANS [ nom de la table ] ( [ col_1 ] , [ col_2 ] , ... )
VALEURS ( [ val_1 ] , [ val_2 ] , ... )
SUR LA MISE À JOUR DE CLÉ EN DOUBLE [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Spécifiez le nom de la table, les noms des colonnes et les valeurs de votre choix à la place de nom_table, col_1, col_2, … et val_1, val_2, …, etc.

Exemple : Comment utiliser la fonctionnalité INSERT ON DUPLICATE KEY UPDATE dans MySQL ?



Tout d'abord, connectez-vous à la base de données MySQL avec les privilèges appropriés, puis exécutez la commande ci-dessous pour récupérer les données de la table « linuxhint_author » :

SÉLECTIONNER * FROM linuxhint_author ;

La commande select récupère tous les enregistrements de la table « linuxhint_author » :

Exécutez maintenant la commande SQL suivante pour insérer ou mettre à jour un enregistrement spécifique dans la table 'linuxhint_author', avec la fonctionnalité 'ON DUPLICATE KEY UPDATE' activée :

INSÉRER DANS linuxhint_author ( identifiant , nom, âge, auteurRang, email )
VALEURS ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@exemple.com' )
SUR LA MISE À JOUR DE CLÉ EN DOUBLE
nom = VALEURS ( nom ) ,
âge = VALEURS ( âge ) ,
authorRank = VALEURS ( auteurRang ) ,
e-mail = VALEURS ( e-mail ) ;

Étant donné que l'enregistrement spécifié n'existe pas déjà dans la table 'linuxhint_author', il sera inséré avec succès dans la table sélectionnée :

Insérons un enregistrement en double et voyons comment le ' SUR LA MISE À JOUR DE CLÉ EN DOUBLE ” fonctionnalité fonctionne dans MySQL :

INSÉRER DANS linuxhint_author ( identifiant , nom, âge, auteurRang, email )
VALEURS ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@exemple.com' )
SUR LA MISE À JOUR DE CLÉ EN DOUBLE
nom = VALEURS ( nom ) ,
âge = VALEURS ( âge ) ,
authorRank = VALEURS ( auteurRang ) ,
e-mail = VALEURS ( e-mail ) ;

À partir de l'extrait ci-dessous, on peut clairement voir que l'enregistrement déjà existant est mis à jour avec succès avec les nouvelles valeurs :

La fonctionnalité 'INSERT ON DUPLICATE KEY' peut également être appliquée à une colonne spécifique au lieu de l'intégralité de l'enregistrement :

INSÉRER DANS linuxhint_author ( identifiant , auteurRang )
VALEURS ( 3 , 2 )
SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE authorRank = VALUES ( auteurRang ) ;

Dans le code ci-dessus, le 'authorRank' d'un auteur avec l'ID '3' est mis à jour avec une nouvelle valeur '2':

C'est ainsi que fonctionne la fonctionnalité 'INSERT ON DUPLICATE KEY UPDATE' dans MySQL.

Conclusion

Dans MySQL, le INSÉRER SUR LA MISE À JOUR DE LA CLÉ EN DOUBLE est une fonctionnalité avancée qui nous permet de combiner la fonctionnalité d'insertion d'une nouvelle ligne et de mise à jour/modification d'une ligne déjà existante en une seule opération. Cette fonctionnalité aide les utilisateurs à éviter l'erreur de 'violation de clé en double' lorsqu'ils tentent d'insérer une nouvelle ligne dans une table particulière. Cet article a expliqué ce qu'est 'INSERT ON DUPLICATE KEY UPDATE' et comment cela fonctionne dans MySQL.