On duplicate key sur deux colonnes :s - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : On duplicate key sur deux colonnes :s (/showthread.php?tid=3835) Pages :
1
2
|
RE: On duplicate key sur deux colonnes :s - wild-D - 02-04-2009 mdr, mysql y s'occupe de ses clés... pas de ses colonnes, la différence vous pourriez essayer de la comprendre ? quand je vous dis y a plusieurs jours de chercher comment faire une clé multiple, c'est pas pour rien^^ vous faites la différence entre "de multiples clés" et "une clé multiple" ben mysql aussi il est trop fort, il fait la différence. entre: UNIQUE KEY `a` (`a`,`b`), et UNIQUE KEY `a` (`a`), UNIQUE KEY `b` (`b`), ^^ enfin bon si vous voulez être tordu vous pouvez même tenter: UNIQUE KEY `ab` (`a`,`b`), UNIQUE KEY `a` (`a`), UNIQUE KEY `b` (`b`), normalement mysql sera pas trop regardant sur la normalisation de vos index edit: lol le copier-coller c'est tabou en en viendra tous à bout RE: On duplicate key sur deux colonnes :s - Ruz - 02-04-2009 euh, là, je suis largué, je comprend rien à ton message... tu peux me le refaire en petit nègre que je comprenne? RE: On duplicate key sur deux colonnes :s - Findel - 02-04-2009 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 RE: On duplicate key sur deux colonnes :s - Ruz - 02-04-2009 cool... connaissais pas ce détail, quoique c'est logique au final... me semblait par contre que le ON DUPLICATE KEY se référait uniquement à la clé primaire: fausse info? RE: On duplicate key sur deux colonnes :s - Findel - 03-04-2009 Oui et Non : ça marche pour les clés primaires ET les index uniques RE: On duplicate key sur deux colonnes :s - Ter Rowan - 03-04-2009 Est ce qu'on peut résumer en disant que à chaque fois que le système ne peut pas faire l'insert car "l'enregistrement" existe (au sens une contrainte d'unicité) alors on met à jour l'enregistrement avec les données/calculs qui suivent l'Update RE: On duplicate key sur deux colonnes :s - Ruz - 03-04-2009 bah, ca résume bien... |