Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour de manière concise des enregistrements existants lors d'une insertion avec des clés uniques en conflit ?

Comment puis-je mettre à jour de manière concise des enregistrements existants lors d'une insertion avec des clés uniques en conflit ?

Barbara Streisand
Libérer: 2024-12-18 09:43:09
original
302 Les gens l'ont consulté

How Can I Concisely Update Existing Records When Inserting with Conflicting Unique Keys?

Insérer avec mise à jour de clé en double : une approche concise

Lorsque vous travaillez avec des bases de données, il est souvent souhaitable de mettre à jour les enregistrements existants lorsque vous tentez d'en insérer de nouveaux avec des clés uniques en conflit . C'est là que la clause "ON DUPLICATE KEY UPDATE" est utile.

La situation

Supposons que vous ayez une table avec un index unique sur le champ "id" et vous souhaitez insérer un nouvel enregistrement en vous assurant que si l'identifiant existe déjà, l'enregistrement correspondant est mis à jour.

Conventionnel Approche

L'approche conventionnelle consiste à spécifier toutes les valeurs de champ dans la clause UPDATE, comme indiqué ci-dessous :

INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8;
Copier après la connexion

Cette approche fonctionne bien mais peut devenir verbeuse si vous avez un grand nombre de colonnes.

Alternative concise

Pour simplifier la clause UPDATE, vous pouvez utiliser le mot-clé "VALUES" pour spécifier les nouvelles valeurs des champs mis à jour. Cela élimine le besoin de répéter les noms de colonnes :

INSERT INTO table (id, a, b, c, d, e, f, g) VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c), d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g);
Copier après la connexion

Cette approche est plus concise et permet toujours d'obtenir le même résultat.

Obtention du dernier identifiant inséré

Si vous avez besoin de récupérer l'ID de l'enregistrement nouvellement inséré ou mis à jour, vous pouvez utiliser la méthode spécifique au backend fournie par votre base de données ou votre framework. Par exemple, dans LuaSQL, vous pouvez utiliser la fonction « conn:getlastautoid() » pour récupérer le dernier ID généré automatiquement.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal