Bonsoir,
mon but est de n'insérer des valeurs que si celles-ci ne sont pas déjà présentes en bdd. J'ai fait pour cela un INSERT IGNOREINSERT IGNORE INTO `application` (application_name,platform,platform_owner,publisher) VALUES('APPLICATIONNAME','PLATFORM','SESA12345','PUBLISHER');Les valeurs insérées, c'est n'importe quoi, juste pour la mise au point.
Et ben, si je lance une deuxième fois la requête, je m'attends à ce qu'elle soit ignorée. Et ben, non. Je me retrouve avec 2 enregistrements identiques dans ma table, à part l'identifiant qui a été auto-incrémenté.
Voici la DDL de la table :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DROP TABLE IF EXISTS `application`; CREATE TABLE `application` ( `application_key` smallint(2) NOT NULL AUTO_INCREMENT, `application_name` varchar(30) COLLATE utf8_bin NOT NULL DEFAULT '', `platform` varchar(30) COLLATE utf8_bin DEFAULT NULL, `platform_owner` varchar(30) COLLATE utf8_bin DEFAULT NULL, `publisher` varchar(30) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO `application` (`application_key`, `application_name`, `platform`, `platform_owner`, `publisher`) VALUES (4, 'APPLICATIONNAME', 'PLATFORM', 'SESA12345', 'PUBLISHER'), (5, 'APPLICATIONNAME', 'PLATFORM', 'SESA12345', 'PUBLISHER');
Peut-on m'expliquer ce mystère et comment je peux faire pour atteindre mon objectif ?
Partager