Je veux faire quelque chose comme ça
INSERT INTO t (t.a, t.b, t.c)
VALUES ('clé1', 'clé2', 'valeur')
ON DUPLICATE KEY UPDATE
t.c = 'valeur';
INSERT INTO t (t.a, t.b, t.c)
VALUES ('clé1', 'clé3', 'valeur2')
ON DUPLICATE KEY UPDATE
t.c = 'valeur2';
t.a et t.b sont des clés. Tout fonctionne bien mais j'obtiens une erreur sur la deuxième insertion. Avec phpMyAdmin, une requête comme celle-ci fonctionne bien mais je suppose qu'elle exécute les requêtes de manière indépendante car elle imprime les résultats de cette requête sous forme de commentaires?
Quelque chose comme ça serait bien aussi, mais j'aurai besoin d'avoir des valeurs différentes pour chaque élément. Je préfère cela mais je ne suis pas sûr comment je peux changer la valeur lors de la mise à jour pour chaque valeur.
INSERT INTO t (t.a, t.b, t.c)
VALUES ('clé1', 'clé2', 'valeur'), ('clé1', 'clé3', 'valeur2')
ON DUPLICATE KEY UPDATE
t.c = ???
Le problème se trouve dans les points d'interrogation, que dois-je mettre là pour que chaque insertion/mise à jour ait la valeur correcte? Évidemment, si je mets une valeur là-bas, tous les champs obtiendront cette valeur.
S'il existe une autre façon de faire une requête "mise à jour si existe, sinon insérer" sur plusieurs champs avec deux clés, je suis ouvert à d'autres idées aussi. Je suppose que je pourrais exécuter chaque requête séparément (comme phpMyAdmin?) mais cela va impliquer beaucoup de requêtes donc je préfère vraiment éviter cela.