Maison  >  Article  >  base de données  >  Comment insérer des lignes en double dans une table MySQL sans lister les colonnes ?

Comment insérer des lignes en double dans une table MySQL sans lister les colonnes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-12 14:41:02931parcourir

How to Insert Duplicate Rows into a MySQL Table Without Listing Columns?

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 :

  1. Créez une table temporaire avec le même schéma comme table d'origine :
CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
  1. Mettez à jour la colonne de clé primaire dans la table temporaire pour NULL :
UPDATE tmptable_1 SET primarykey = NULL;
  1. Insérer la ligne modifiée dans la table d'origine :
INSERT INTO table SELECT * FROM tmptable_1;
  1. Supprimer la table temporaire :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn