Maison  >  Article  >  base de données  >  Comment cloner une ligne dans MySQL sans sélectionner explicitement de colonnes ?

Comment cloner une ligne dans MySQL sans sélectionner explicitement de colonnes ?

DDD
DDDoriginal
2024-11-10 19:07:03437parcourir

How to Clone a Row in MySQL without Explicitly Selecting Columns?

Clonage d'une ligne dans MySQL : alternative à la sélection explicite de colonnes

Dans MySQL, la réplication rapide et efficace d'une ligne de table est souvent souhaitée. L'approche courante consiste à extraire les données de ligne à l'aide de "SELECT *" et à les réinsérer dans la même table. Cependant, cette méthode devient lourde avec des tableaux contenant un grand nombre de colonnes.

Leonard Challis a proposé une solution astucieuse qui évite d'avoir à lister toutes les colonnes :

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;

Cette technique consiste à créer un table temporaire pour stocker la ligne souhaitée. La clé primaire de cette table temporaire est définie sur null, permettant à MySQL de générer une nouvelle valeur lors de l'insertion. Pour garantir qu'une seule ligne est récupérée, "LIMIT 1" peut être ajouté à l'instruction INSERT INTO.

Pour garantir davantage que seule la ligne prévue est insérée, la valeur de la clé primaire doit être ajoutée au nom de la table temporaire. comme on le voit dans l'extrait de code. Cette technique simplifie le processus de copie de lignes sans avoir besoin de sélection explicite de colonnes, ce qui en fait un outil précieux pour gérer de grandes tables dans MySQL.

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