2011-04-14 1 views
1

Supposons que j'ai une table reports avec une colonne int auto_increment id qui sert de clé primaire.Si vous chargez un fichier de vidage dans une table avec une colonne auto_increment, que se passe-t-il?

Si je mysqldump ce tableau dans un fichier avec des instructions drop table et create table ajouté, puis je charge dans une autre base de données B qui est tout comme A, mais manque quelques-unes des plus récentes reports records, fin base de données B ne avec une copie exacte de la table reports A de la base de données? Que se passerait-il si les instructions drop table et create table manquaient?

Répondre

0

Les données de la colonne auto_increment sont conservées telles quelles. Essayez de faire un mysqldump à une seule table et voir comment la colonne est insérée.

Notez également que la définition de table de chaque table conserve la valeur auto_increment suivante alors que les valeurs précédentes sont incluses dans la liste des valeurs. Voici un exemple:

mysql> créer un test de base de données;
Recherche OK, 1 row affected (0.06 sec)

mysql> test d'usage
base de données a changé
mysql> create table tb (nom char (10), id int non nul clé primaire auto_increment) MOTEUR = MyISAM ;
Recherche OK, 0 lignes affectées (0,13 sec)

mysql> insérer dans tb valeurs (nom) ('John'), ('Mary'), ('Joseph');
Query OK, 3 lignes affectées (0,05 sec)
Records: 3 doublons: 0 avertissements: 0

mysql> select * from tb;
+ -------- + ---- +
| nom | id |
+ -------- + ---- +
| John | 1 |
| Mary | 2 |
| Joseph | 3 |
+ -------- + ---- +
3 rangs dans l'ensemble (0,03 sec)

je fis une mysqldump de la base de données de test et voici ce qu'il a produit:

TABLE DE GOUTTE SI EXISTE tb;
/*! 40101 SET @saved_cs_client = @@ character_set_client /;
/
! 40101 SET character_set_client = utf8 * /;
tb CREATE TABLE (
name char (10) NULL DEFAULT,
id int (11) NOT NULL AUTO_INCREMENT,
clé primaire (id)
) MOTEUR = MyISAM AUTO_INCREMENT = 4 DEFAULT CHARSET = latin1;
/*!40101 SET character_set_client = @saved_cs_client * /;

-
- Données sur les rejets Table tb
-

BLOCAGE TABLES tb souscrivons;
/*! 40000 ALTER TABLE tb TOUCHES DÉSACTIVÉES /;
INSÉRER DANS tb VALEURS ('Jean', 1), ('Marie', 2), ('Joseph', 3);
/
! 40000 ALTER TABLE tb ACTIVER LES TOUCHES /;
TABLES DE DÉVERROUILLAGE;
/
! 40103 SET TIME_ZONE = @ OLD_TIME_ZONE * /;

Essayez-le!

0

Si vous utilisez mysqldump. La définition de la table create définira la valeur AUTO_INCREMENT quelle que soit la valeur au moment du vidage. Lorsque vous importez la sauvegarde, les instructions INSERT spécifient la valeur à insérer dans la nouvelle table.

Si les états baisse/create table manquent la valeur AUTO_INCREMENT devrait être quel que soit le dernier enregistrement inséré a été + 1.

0

champs d'auto-incrémentation ne définir des valeurs automatiques si vous insérez NULL en eux.
Sinon, ils acceptent la valeur que vous leur mettez.

(Pourvu qu'il n'y ait pas d'autres limitations qui empêchent cela de se produire, comme unique, primary, etc.).

Questions connexes