J'essaye d'insérer dans une de mes tables (de la même table). J'ai besoin de changer 1 des valeurs, donc j'ai essayé d'insérer avec select comme here. J'ai un pk d'incrémentation automatique, et je voudrais que le pk nouvellement inséré continue le compte. l'insertion entraînerait donc l'ajout de 1 au pk.Insert de contradiction MySQL
INSERT INTO test.pp_publication_info
(id,
publication_fk,
template_fk,
allow_excel_upload)
SELECT
id, 55, template_fk, allow_excel_upload
FROM pp_publication_info where id = "1";
J'obtiens une erreur 1062, qui est une entrée en double pour 1
pour PRIMARY KEY. Je l'aurais bien fait car à cause de l'IA, il aurait +1 la colonne ID. J'ai donc vérifié pour voir si je pouvais ajouter un ON DUPLICATE KEY UPDATE id
. Malheureusement, peu importe où je l'ai mis dans la requête.
Donc en un mot: puis-je INSERT
de cette façon, avec select tout en maintenant la fonction AI? Si oui, où vais-je me tromper et si non, existe-t-il des alternatives?
Addition: create de ma table:
CREATE TABLE `pp_publication_info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`publication_fk` int(10) unsigned NOT NULL,
`template_fk` int(10) unsigned DEFAULT NULL,
`allow_excel_upload` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8;
Qui a glissé passé. Merci d'avoir fait remarquer cela. Acceptera ceci comme ma réponse. – Nina