Maison > Article > base de données > Comment insérer des lignes en double dans une table MySQL sans lister les colonnes ?
Copie de lignes dans la même table MySQL sans liste de colonnes
Dans MySQL, on peut rencontrer l'erreur "Entrée en double 'xxx' pour la clé 1 " lorsque vous tentez d'insérer une ligne dans une table qui contient déjà la même valeur de clé primaire. En effet, MySQL impose des valeurs uniques pour les clés primaires.
Pour résoudre ce problème tout en évitant la liste manuelle de toutes les colonnes, une méthode plus simple existe :
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;
En définissant la clé primaire sur NULL dans la table temporaire, MySQL peut générer automatiquement une nouvelle valeur unique lorsque en insérant la ligne dans la table principale, évitant ainsi l'erreur d'entrée en double.
Pour plus d'assurance, pensez à ajouter une clause LIMIT 1 à la fin de la ligne INSERT INTO pour vous assurer qu'une seule ligne est insérée.
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!