2010-11-14 3 views
1

Cette table mysql possède un champ d'auto-incrémentation. Je veux dupliquer certaines lignes. Je pensais que je vais utiliser une table temporaire:Duplication de lignes dans une table mysql sans énumération de champs

CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1; 

Avant de copier les données à MYTAB je peux maintenant faire des mises à jour à tmptab.

UPDATE tmptab ... /* some updates */; 

Parce que mytab a un champ autoincrement Je ne peux pas simplement copier le contenu de tmptab à MYTAB. Une solution consisterait à énumérer les champs (et à omettre le champ d'auto-incrémentation).

Je cherche une solution sans énumérer les champs. Cela a des avantages, par exemple lorsque les champs seront ajoutés plus tard.

Je thougth je pouvais effacer le champ autoincrement dans tmptab (enlever la colonne autoincrement), puis utiliser une requête similaire à celui-ci:

INSERT INTO mytab SELECT * FROM tmptab; 

Est-ce que ce travail? Le champ autoincrement dans mytab doit être défini correctement. Ou y a-t-il une meilleure façon de le faire?

+0

autoindex = auto_increment? – ajreal

Répondre

1

Je thougth je pouvais effacer le champ autoindex dans tmptab (retrait de la colonne autoindex), puis utiliser une requête similaire à celui

Vous devez utiliser une commande comme ceci:

UPDATE tmptab SET key_column=NULL 

Lorsque vous insérez des valeurs NULL dans la table d'origine, il génère de nouveaux ID auto_increment.

Vous devrez peut-être ajouter une commande pour supprimer l'index de clé primaire sur la table temporaire pour que cela fonctionne.

+0

Cela fonctionne, merci beaucoup! – mit

Questions connexes