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

Résolu
cs_brezoneg Messages postés 104 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 19 août 2015 - 9 sept. 2010 à 21:28
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

4 réponses

cs_brezoneg Messages postés 104 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 19 août 2015
10 sept. 2010 à 16:18
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
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 sept. 2010 à 22:30
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à ;)
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
10 sept. 2010 à 12:58
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
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
11 sept. 2010 à 06:26
Superbe solution. Pourquoi faire simple quand on peut faire compliqué ?


Cordialement.

JC
0
Rejoignez-nous