Maison > base de données > tutoriel mysql > le corps du texte

Comment dupliquer des lignes dans MySQL sans erreur d'entrée en double ?

Barbara Streisand
Libérer: 2024-11-14 21:50:02
original
776 Les gens l'ont consulté

How to Duplicate Rows in MySQL Without a Duplicate Entry Error?

Duplication de lignes dans MySQL : une solution alternative

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
Copier après la connexion

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;
Copier après la connexion

Explication :

  1. Une table temporaire (tmptable_1) est créée et remplie avec la ligne souhaitée dupliqué.
  2. La colonne clé primaire dans la table temporaire est définie sur NULL. Cela permet à MySQL d'attribuer automatiquement une valeur unique, évitant toute duplication de clé.
  3. La ligne de la table temporaire est insérée dans la table d'origine.
  4. La table temporaire est ensuite supprimée.

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!

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