Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-12 14:41:02
original
1007 Les gens l'ont consulté

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;
Copier après la connexion
  1. Mettez à jour la colonne de clé primaire dans la table temporaire pour NULL :
UPDATE tmptable_1 SET primarykey = NULL;
Copier après la connexion
  1. Insérer la ligne modifiée dans la table d'origine :
INSERT INTO table SELECT * FROM tmptable_1;
Copier après la connexion
  1. Supprimer la table temporaire :
DROP TEMPORARY TABLE IF EXISTS tmptable_1;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal