Page 1 sur 1

Probleme sur ON DUPLICATE KEY UPDATE & WHERE

Posté : 20 juil. 2009, 21:19
par Jabar
Bonsoir,

Mon INSERT + ON DUPLICATE KEY UPDATE fonctionne.

Mais dès que je veux rajouter une clause WHERE a l'update, plus rien ne se passe, ni insert (ce qui est normal vu que les clef unique sont duppliquer) mais pas d'update non plus.

J'ai comme erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE b != '10''
mon code :
mysql_query("INSERT INTO table (a,b,c,d,e) VALUES ('a','b','c','d','e') ON DUPLICATE KEY UPDATE a=a+'10', b='10' WHERE b != '10'") or die (mysql_error());
Ou faut'il que je le mette ce WHERE ?

Merci d'avance?

Posté : 20 juil. 2009, 22:35
par Ryle
Il n'y a pas de clause WHERE dans un "ON DUPLICATE KEY UPDATE" :)

En effet, si lors de l'insertion des données la clé primaire existe déjà, l'enregistrement est mis à jour avec les nouvelles valeurs. Il n'y a donc pas de WHERE à spécifier, puisque tu es déjà "positionné" sur l'enregistrement à mettre à jour :)

Posté : 20 juil. 2009, 22:54
par Jabar
ui mais j'aurais aimer qu'il mette a jour que si la valeur n'est pas égal...

Donc je suis obligé de faire plusieurs requêtes pour mettre à jour :

1 select
une comparaison
et 1 insert ou update...

C'est ça ?

Posté : 21 juil. 2009, 16:46
par AB
ui mais j'aurais aimer qu'il mette a jour que si la valeur n'est pas égal...

Donc je suis obligé de faire plusieurs requêtes pour mettre à jour :

1 select
une comparaison
et 1 insert ou update...

C'est ça ?
Dans ce cas je pense comme tu le dis qu'il faut deux requêtes...

Ta condition dans ta syntaxe initiale est incorrecte car "on duplicate key update" est
une instruction qui complémente éventuellement une requête d'insertion.
Et dans une requête d'insertion il n'y a pas de clause where.