Bonjour,

J'ai créé une base de données dans laquelle il y a trois tables:

Joueur :
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;
Jeux :

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 ;
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;
Les contraintes de la table essais :

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'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.

J'utilise cette requête :

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);
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.

Merci pour votre aide.