[MySQL] Fusion de UPDATE et INSERT

Résolu
GallyNet Messages postés 437 Statut Membre -  
 Thibs -
Bien le bonjour, je voudrais savoir s'il existe un moyen de faire des UPDATE mais que lorsque l'enregistrement n'existe pas qu'il l'insert. Ou l'inverse : faire un INSERT mais que si l'enregsitrement existe, on ne fasse qu'un UPDATE.
Et ca en une seul requete ?

Parce que sinon, je suis obligé de faire 2 requetes : un SELET pour savoir si l'enregistrement existe puis le INSERT ou le UPDATE selon le resultat. Et j'ai plusieurs centaines d'enregistrements (dans le meilleur des cas) à mettre a jour/créer. Et faire cela en une seule requete me permettré de gagner un max de temps.

Merci d'avance pour les réponses.

3 réponses

  1. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Dans la doc de MySQL tu trouves :
    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
        -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
    

    http://dev.mysql.com/doc/refman/4.1/en/insert.html

    Est-ce que ça peut répondre à tes attentes ?
    A+, crabs
    43
  2. GallyNet Messages postés 437 Statut Membre 387
     
    Je l'avais psa vu, merci beaucoup c'est exactement ce que je voulais.
    3
  3. Thibs
     
    La solution proposée par crabs est effectivement une bonne solution.

    En alternative il y a également la fonction replace décrite sur http://dev.mysql.com/doc/refman/5.0/fr/replace.html
    3