Lors de la tentative de duplication d'une ligne dans la même table MySQL à l'aide de la requête :
insert into table select * from table where primarykey=1
vous pouvez rencontrer une erreur de saisie en double en raison de la contrainte de clé primaire existante. Bien qu'une table temporaire puisse être utilisée pour contourner ce problème, il existe une solution plus simple.
En utilisant la technique modifiée suivante inspirée de Leonard Challis :
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1; UPDATE tmptable_1 SET primarykey = NULL; INSERT INTO table SELECT * FROM tmptable_1; DROP TEMPORARY TABLE IF EXISTS tmptable_1;
Explication :
En définissant la clé primaire sur NULL, vous éliminez le risque de créer des entrées en double. De plus, l'ajout de LIMIT 1 à la fin de l'instruction INSERT INTO garantit qu'une seule ligne est insérée.
L'ajout de la valeur de la clé primaire au nom de la table temporaire est une mesure de précaution permettant d'éviter des conflits potentiels lorsque plusieurs lignes sont en cours d'insertion. dupliqué simultanément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!