Bonjour,
J'ai créé une base de données dans laquelle il y a trois tables:
Joueur :
Jeux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `joueur` ( `email` varchar(255) NOT NULL, `prenom` char(30) NOT NULL, `nom` char(30) NOT NULL, `anniversaire` date NOT NULL, `password` varchar(256) DEFAULT NULL, PRIMARY KEY (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Essais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE IF NOT EXISTS `jeux` ( `idjeux` int(11) NOT NULL AUTO_INCREMENT, `name` char(30) NOT NULL, PRIMARY KEY (`idjeux`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
Les contraintes de la table essais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE IF NOT EXISTS `essais` ( `idessais` int(11) NOT NULL, `dateessais` date NOT NULL, `email` varchar(128) NOT NULL, `score` bigint(4) DEFAULT NULL, PRIMARY KEY (`idessais`,`dateessais`), KEY `I_FK_tryes_games` (`idessais`), KEY `I_FK_tryes_client` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
J'essaie qu'à chaque connexion d'un joueur, si il est déjà présent dans la table essais, la colonne "datessais" se mette à jour et si le joueur n'est pas présent une nouvelle ligne soit créée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ALTER TABLE `essais` ADD CONSTRAINT `essais_ibfk_1` FOREIGN KEY (`email`) REFERENCES `joueur` (`email`), ADD CONSTRAINT `essais_ibfk_2` FOREIGN KEY (`idjeux`) REFERENCES `jeux` (`idjeux`);
J'utilise cette requête :
La ligne étant déjà existante je me retrouve, non pas avec une ligne avec la date modifiée, mais avec une nouvelle ligne, la requête effectue l'insertion plutôt que la mise à jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 insert into essais (idjeux, dateessais, email, score) values (2, CURRENT_DATE(), 'maurice.roger@truc.com', NULL) on duplicate key update dateessais values(dateessais);
Merci pour votre aide.
Partager