Maison > base de données > tutoriel mysql > Comment dupliquer des lignes dans MySQL sans violer les contraintes de clé primaire ?

Comment dupliquer des lignes dans MySQL sans violer les contraintes de clé primaire ?

Linda Hamilton
Libérer: 2024-11-11 16:04:02
original
177 Les gens l'ont consulté

How to Duplicate Rows in MySQL Without Violating Primary Key Constraints?

Duplication de lignes dans MySQL sans énumération de colonnes

Dans MySQL, les utilisateurs rencontrent le besoin de créer des copies de lignes existantes dans une table. Bien qu'il soit tentant d'utiliser une approche simple telle que :

insert into table select * from table where primarykey=1
Copier après la connexion

cette méthode déclenche une erreur « Entrée en double pour la clé 1 » en raison du caractère unique des clés primaires. Pour contourner ce problème, une solution viable implique la création d'une table temporaire :

create table oldtable_temp like oldtable;
insert into oldtable_temp select * from oldtable where key=1;
update oldtable_tem set key=2;
insert into oldtable select * from oldtable where key=2;
Copier après la connexion

Cependant, une approche plus simple existe, comme suggéré par 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

En utilisant une table temporaire, nous pouvons éviter les soucis de duplication de clé primaire. Définir la clé primaire sur null permet à MySQL d'attribuer automatiquement une valeur unique, éliminant ainsi le risque de créer un doublon.

Pour garantir la singularité lors de l'insertion, pensez à ajouter LIMIT 1 à l'instruction INSERT INTO.

De plus, il est recommandé d'incorporer la valeur de la clé primaire (par exemple, "tmptable_1" dans l'exemple) dans le nom de la table temporaire pour plus de clarté.

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