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