Copier une table dans la même base en gardant l' auto_incrément ? [Résolu]

Messages postés
104
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
19 août 2015
- - Dernière réponse : cs_jeca
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
- 11 sept. 2010 à 06:26
Bonjour,
J'essaye de faire la copie d'une table vers une autre (un clone en quelque sorte) en utilisant :
$sql="create table nouvelle_table as select * from ancienne table";
mysql_query($sql);
Mais je perd l'auto_increment et la primary key
comment faire pour les garder dans la structure ?

merci
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
104
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
19 août 2015
3
Merci
en fait

$sql11="ALTER TABLE matable ADD PRIMARY KEY (id_nom)";
mysql_query($sql11);
$sql11="ALTER TABLE matable CHANGE id_nom id_non INT( 10 ) unsigned NOT NULL AUTO_INCREMENT ";
mysql_query($sql11);

merci

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_brezoneg
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11
0
Merci
Salut,

Il suffit de remettre l'index comme il faut et modifier l'auto_increment :
ALTER TABLE `ma_table` ADD PRIMARY KEY (`column`);
ALTER TABLE `ma_table` AUTO_INCREMENT = 31415;


--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
10
0
Merci
Bonjour,

Et comme ça ?
<?php
  $sql = 'CREATE TABLE nouvelle_table 
          LIKE ancienne_table';
  mysql_query($sql);
  
  $sql = 'INSERT INTO nouvelle_table (liste_des_colonnes) 
            SELECT (liste_des_colonnes) 
            FROM ancienne_table';
  mysql_query($sql);
?>


Cordialement.

JC
Commenter la réponse de cs_jeca
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
10
0
Merci
Superbe solution. Pourquoi faire simple quand on peut faire compliqué ?


Cordialement.

JC
Commenter la réponse de cs_jeca