Requête Upsert efficace pour la mise à jour de clé en double
Lors de l'insertion de données dans une table MySQL avec un index unique, il est souvent nécessaire de mettre à jour une table existante enregistrer si la clé existe déjà. Pour ce faire, une clause "ON DUPLICATE KEY UPDATE" est généralement utilisée, spécifiant les champs à modifier. Cependant, spécifier à nouveau tous les champs peut s'avérer inefficace.
Syntaxe alternative
Une approche plus simple consiste à utiliser la fonction VALUES(), 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=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g);
Cette syntaxe évite d'avoir à spécifier chaque champ deux fois, ce qui rend la requête plus concis.
Envisagez d'éviter les mises à jour
Il est important de noter que la mise à jour des champs avec les mêmes valeurs qu'ils ont déjà n'est pas nécessaire. Si l'enregistrement existant contient déjà les mêmes données que l'insertion, il n'est pas nécessaire d'effectuer une mise à jour. La syntaxe suivante peut être utilisée pour éviter les mises à jour inutiles :
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=a, b=b, c=c, d=d, e=e, f=f, g=g;
Récupération de l'ID du dernier insert
Pour obtenir l'ID de l'enregistrement nouvellement inséré ou mis à jour, le la syntaxe dépend de l'application backend utilisée. Par exemple, dans LuaSQL, la fonction conn:getlastautoid() peut être utilisée pour récupérer la valeur.
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!