[MySQL] Fusion de UPDATE et INSERT

Résolu/Fermé
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 - 6 déc. 2005 à 17:08
 Thibs - 1 avril 2011 à 17:03
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.
A voir également:

3 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 506
6 déc. 2005 à 17:24
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
GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
6 déc. 2005 à 17:26
Je l'avais psa vu, merci beaucoup c'est exactement ce que je voulais.
3
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