PRATIQUE OUTILS 
MySQL : utilisation de REPLACE
 
"Avec MySQL, comment puis-je transformer une requête INSERT en UPDATE si la valeur-clé existe déjà dans la base ?" (07/10/2004)

La solution se trouve probablement dans la fonction REPLACE de MySQL (qui existe également dans d'autres SGBD SQL). Comme expliqué par la documentation MySQL, celle-ci fonctionne exactement comme INSERT, mais fera l'équivalent d'un UPDATE (pour simplifier) dans le cas où la table dispose d'un index UNIQUE (un PRIMARY KEY sur id par exemple).

Sa syntaxe est donc similaire à celle de INSERT :

REPLACE INTO dvd (id, titre, annee, region) VALUES (17, 'Mary of Scotland', 1936, 1), (18, 'Marie Stuart', 1936, 2);

id titre annee region
... ... ... ...
17 'Marie of Scotland' 1937 1
37 'Terminator vs. Casimir' 2004 2

Ce qui donnera :

id titre annee region
... ... ... ...
17 'Mary of Scotland' 1936 1
18 'Marie Stuart' 1936 2
37 'Terminator vs. Casimir' 2004 2

  Forum

Réagissez dans les forums de JDN Développeurs

Dans le cas où l'entrée n'existe pas déjà, il y a une insertion des plus classiques... Le nombre de lignes sera ensuite 1 s'il y a insertion simple, et 2 s'il y a remplacement (effacement d'un ligne et insertion d'une autre).

Vous combinez ainsi en une seule requête les requêtes DELETE et INSERT nécessaire au même travail, le tout sans devoir verrouiller la base par précaution.

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page