Je suppose que dans ta requete, tu as a = Coordonnées X, b = Coordonnées Y, c = Type d'unité ?
Si oui, alors il n'y a rien d'illogique à dire que : Il ne peut pas y avoir plusieurs unités du même type sur la même case (X, Y).
Si tu peux dire ça alors tu peux tout à fait mettre comme clé primaire a+b+c et donc ton ON DUPLICATE KEY va fonctionner pour les 3 à la fois.
Edit : pour le message de wild-D, ce qu'il veut dire c'est que tu peux avoir plusieurs cléfs uniques, qui peuvent chacune porter sur plusieurs colonnes.
Exemple :
Clé1, portant sur la colonne a, et Clé2, portant sur la colonne b, indiquent :
- qu'il ne peut y avoir aucun doublon dans la colonne a
- qu'il ne peut y avoir aucun doublon sur la colonne b
en SQL ça s'écrit :
UNIQUE KEY `a` (`a`),
UNIQUE KEY `b` (`b`),
Clé2, portant sur la colonne a ET b, indique qu'il ne peut pas y avoir de doublon de couple
en SQL ça s'écrit
UNIQUE KEY `ab` (`a`,`b`),
On peut également dire les deux à la fois, ce qui a pour effet de cumuler toutes les contraintes : pas deux fois la même valeur dans a, pas deux fois la même valeur dans b et pas deux couples identiques
Si oui, alors il n'y a rien d'illogique à dire que : Il ne peut pas y avoir plusieurs unités du même type sur la même case (X, Y).
Si tu peux dire ça alors tu peux tout à fait mettre comme clé primaire a+b+c et donc ton ON DUPLICATE KEY va fonctionner pour les 3 à la fois.
Edit : pour le message de wild-D, ce qu'il veut dire c'est que tu peux avoir plusieurs cléfs uniques, qui peuvent chacune porter sur plusieurs colonnes.
Exemple :
Clé1, portant sur la colonne a, et Clé2, portant sur la colonne b, indiquent :
- qu'il ne peut y avoir aucun doublon dans la colonne a
- qu'il ne peut y avoir aucun doublon sur la colonne b
en SQL ça s'écrit :
UNIQUE KEY `a` (`a`),
UNIQUE KEY `b` (`b`),
Clé2, portant sur la colonne a ET b, indique qu'il ne peut pas y avoir de doublon de couple
en SQL ça s'écrit
UNIQUE KEY `ab` (`a`,`b`),
On peut également dire les deux à la fois, ce qui a pour effet de cumuler toutes les contraintes : pas deux fois la même valeur dans a, pas deux fois la même valeur dans b et pas deux couples identiques