MySQL : On Duplicate Key UPDATE

Une problématique régulière sur un site consiste à mettre a jour des données. Parfois la donnée existe déjà et parfois elle n’existe pas.

Vous pouvez utiliser REPLACE mais le REPLACE est simplement un DELETE suivi d’un INSERT.

Exemple :

Je recois régulièrement les données d’une station météo. Parfois je recois la température, d’autre fois je recois l’humidité…si j’utilise REPLACE quand je mets à jour la température, je vais perdre l’humidité de la station X (X etant ma clé primaire, ma table comporte une ligne par station)

Deux méthodes sont possible :

  1. Je fais un SELECT pour savoir si la station a déjà des données et ensuite je fais soit un INSERT soir un UPDATE.
  2. J’utilise ON DUPLICATE KEY : INSERT INTO donnee_station SET temperature=15, station=’Nancy’ ON DUPLICATE KEY UPDATE temperature=15;

L’avantage de la deuxième méthode : cela réduit le code et je ne fais qu’une requete (meme si au niveau du serveur il en execute 2 :il essaye de faire INSERT si il recoit l’erreur Duplicate key Entry il fait UPDATE)

En résumé c’est plus facile est plus propre.

References:

Loogaroo : le retour de Manucorp

Depuis quelques temps, je pense à faire mon retour pour mettre un peu de piment dans le monde du PHP et du web 2.0 (coté technique). Il y a profusion de blog sur le web 2.0 (la blogosphere, les réseaux sociaux, les mashups,…) mais on aborde assez peu l’aspect technique (Comment ca marche, montée en charge, logiciels utilisées, plateforme,…)

Vous allez peut être penser « Encore un bloggueur de plus » mais non ca fait très longtemps que je bloggue mais avant cela ne s’appellait pas comme ca la preuve en image avec ce lien de janvier 2002 sur l’archive du web.

Donc on abordera les grandes lignes du web 2.0 mais surtout les aspects techniques et les petits trucs et astuces pour faire du web 2.0 soi même.

La dernière petite question : « Pourquoi Loogaroo ? »

C’est simple à l’époque du Web 1.0 le double O était en vogue (Google, Yahoo,…) maintenant comme nous sommes passés au Web 2.0, j’ai voulu mettre deux double O et donc Loogaroo est née.



Check out our best movie collection. Latest CD, DVD, HQ DVD movie downloads. Buy and download movies instantly.