(31-03-2009, 09:03 PM)Siko a écrit : Le problèmes c'est que si je fait ca : si une seules des colonnes a un doublon ça va me faire chier non ?
Ce que je cherche a faire c'est un "on duplicate key update" prenant comme clause where plusieurs arguments relier avec des AND alors que de base mysql met de base des OR..
C'est justement l'intérêt d'une clé primaire...
1 clé primaire sur trois champs: chaque combinaison des trois champs est unique. (la clé primaire est unique sur une table)
Si tu veux un doublon des 3 champs, c'est qu'il te faut un 4e champ à ta clé... faut donc repenser ton modèle.
C'est un truc de base, ca...
Le "ON DUPLICATE KEY" est une solution de facilité: tu insères un enregistrement.. pas de bol, la combinaison existe déjà : on met un ou plusieurs champs à jour (de préférence pas ceux intervenant dans la clé, j'espère meme que c'est impossible (=> tu changerais la clé))
Je reprends un exemple bidon, pas le tien, c'est fait volontairement ^^
Citation :INSERT INTO table (a,b,c) VALUES (1,2,3)Tu vois un "WHERE" où, toi???
ON DUPLICATE KEY UPDATE c=c+1;
Et entre nous, j'ai l'impression que mysql travaille avec des AND ici... exemple:
champs:
ID_perso
ID_objet
Quantité
Clé primaire: (ID_objet et ID_perso)
Soit les enregistrements:
1 / 15 / 18
1 / 16 / 1
1 / 21 / 2
2 / 4 / 1
tu fais tes requetes:
INSERT INTO table (...) values (1 / 17 / 1) ON DUPLICATE KEY UPDATE Quantite = Quantite +1
=> 1 / 17 / 1 inséré
INSERT INTO table (...) values (1 / 15 / 2) ON DUPLICATE KEY UPDATE Quantite = Quantite +2
=> clé existe déjà => mise à jour (1 /15 /20)
1) Tu le veux où, ton where??? (meme dans la doc, j'en vois pas) ET dans quel but?
2) ce serait des "OR", tous les champs du perso 1 ET tous les champs des objets 15 seraient mis à jour... raté
3) Quand on t'aide, lis les messages aussi... si ca fait un an que tu sais le faire, ben, où est le problème? Tu recopies ou tu comprends ce que tu fais?
Enfin, m'attendant à la réponse type dans ce genre de discussion, je coupe court : Donnes un exemple concret de ce que tu veux faire (tables, enregistrements, requetes (idéalement selon toi) et résultats attendus). Je suis sûr que quelqu'un de plus compétent que moi arrivera à t'aider (je pense que mes idées te conviennent pas vu ta première réponse...)
Bon courage pour la suite
attendez, je cherche...