[Resolu] SQL: de l'UPDATE à l'INSERT - 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 : [Resolu] SQL: de l'UPDATE à l'INSERT (/showthread.php?tid=6639) Pages :
1
2
|
RE: SQL: de l'UPDATE à l'INSERT - zneman - 12-02-2013 Après avoir suivi tes instructions, je me retrouve avec la table: CREATE TABLE IF NOT EXISTS `t_troupe` ( `PK_troupe` int(11) NOT NULL AUTO_INCREMENT, `FK_joueur` int(8) NOT NULL, `FK_cTroupe` int(3) NOT NULL, `nombre` int(11) NOT NULL, `type` set('0','1') NOT NULL COMMENT '0=defense, 1=attaque', PRIMARY KEY (`PK_troupe`), UNIQUE KEY `FK_joueur` (`FK_joueur`,`FK_cTroupe`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; Et j'obtiens malheureusement: debug : #1062 - Duplicate entry '1-2' for key 'FK_joueur'{"success":false,"error":" #1062 - Duplicate entry '1-2' for key 'FK_joueur'<\/div>"} Je sent que cette fonction va être bien chiante à utiliser sur des gros scripts ^^ Merci encore pour l'aide apporté, bonne nuit (j'en peux plus de me prendre la tête là dessus). RE: SQL: de l'UPDATE à l'INSERT - Holy - 12-02-2013 (12-02-2013, 12:41 AM)zneman a écrit : Et j'obtiens malheureusement:Si jamais ta table peut être vidé, vide là et recommence tes tests. En gros, l'erreur te dit : "Il y a une duplication de la double clé unique dans plusieurs des enregistrements". Tu dois avoir deux lignes qui ne respectent pas les règles que tu veux imposer à ta table, à savoir que toute ligne ne peut avoir deux fois les mêmes FK_joueur et FK_cTroupe (ton double index). Tu aurais la même erreur si tu voulais ajouter une clé primaire sur un champ d'une table déjà remplie dont plusieurs lignes auraient une même valeur pour le champ indexé. C'est une erreur tout à fait normale. RE: SQL: de l'UPDATE à l'INSERT - zneman - 12-02-2013 Table vidée, tests effectués en ligne comme en local ! test donc à vide avec: Code : INSERT INTO t_troupe (FK_joueur, FK_cTroupe, nombre, type) J'ai bien une ligne qui se fait, avec les bonnes valeurs ! Maintenant, je lance la requète sur le même type de troupe (PK_cTroupe) et sur le même joueur (FK_joueur). La ligne existe déjà, je veux simplement qu'elle modifier le nombre de la troupe, de 200 à 300: Code : INSERT INTO t_troupe (FK_joueur, FK_cTroupe, nombre, type) Citation :1 ligne insérée. Il ne m'a donc pas modifié la première ligne, mais en a ajouté une seconde :bave: Même résultat en ligne comme en local. Ma base contient bien une PK en AI ainsi qu'un double index unique. Tu y comprends quelque chose toi ? RE: SQL: de l'UPDATE à l'INSERT - Myrina - 12-02-2013 essaie
puis
RE: SQL: de l'UPDATE à l'INSERT - djidi - 12-02-2013 Dans ton ON DUPLICATE KEY, tu ne mets pas à jour "nombre" mais les valeurs de "FK_joueur" et "FK_cTroupe". Code : INSERT INTO t_troupe (FK_joueur, FK_cTroupe, nombre, type) RE: SQL: de l'UPDATE à l'INSERT - zneman - 13-02-2013 Haaa oui... En effet, c'est bien mieux ! (j'ai un peu honte de moi là je dois bien avouer) Merci à tout le monde pour les aides apportées, ça fait plaisir de reprendre la prog en se cassant bien la tête ! ^^ |