Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 13h22   #1
Membre du Club
 
Inscription : mai 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 137
Points : 52
Points : 52
Par défaut AUTO_increment non continu

bonjour,
j'ai une table avec un id en autoincrement, et clé primaire, mais je m'aperçois que les id ne se suivent pas... ça passe de 1043 à 10000 par exemple, si ça continue comme ça j'aurais plus de place...
j'ai oublié de faire quelque chose?? merci de vos retours
__________________
http://yvonh.com
yvonh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 14h00   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Non c'est normal.

Imaginon le cas suivant:
Code :
1
2
3
4
5
6
7
FOR ($i = 0; $i < 1000; $i++) {
  $pdo->query("INSERT INTO table VALUES (null, 'test')");
}
$pdo->query('DELETE FROM table');
 
$pdo->query("INSERT INTO table VALUES (null, 'test')");
echo $pdo->lastInsertId(); // 1001 !
En fait l'auto-increment est indépendant des modifications que tu fais sur la table, pour redéfinir sa valeur il faut procéder à un alter:
Code :
ALTER TABLE AUTO_INCREMENT=0;
Voir: http://dev.mysql.com/doc/refman/5.0/...increment.html
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 14h41   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par yvonh Voir le message
si ça continue comme ça j'aurais plus de place...
comment ça plus de place ? c'est qu'un numéro c'est pas important
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h04   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 032
Points : 5 032
Note qu'avec un entier signé tu peux monter à 2 147 483 647. ça te laisse une sacré marge non ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h36   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Il ne faut jamais modifier la valeur d'un identifiant. Les identifiants supprimés sont perdus et c'est très bien ainsi.

L'identifiant auto-incrémenté n'est qu'un numéro sans signification qui ne sert que pour la clé primaire d'une table issue d'une entité type du MCD et comme référence dans les clés étrangères d'autres tables.

La seule fois où tu peux remettre l'auto-incrémentation à zéro, c'est quand tu as fini tes tests et que tu veux livrer une BDD vierge à ton client. Ensuite, on n'y touche plus !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2011, 17h26   #6
Membre chevronné
 
Inscription : juillet 2006
Messages : 1 194
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 1 194
Points : 746
Points : 746
Citation:
Envoyé par yvonh Voir le message
bonjour,
j'ai une table avec un id en autoincrement, et clé primaire, mais je m'aperçois que les id ne se suivent pas... ça passe de 1043 à 10000 par exemple, si ça continue comme ça j'aurais plus de place...
j'ai oublié de faire quelque chose?? merci de vos retours
À vérifier peut-être mais il me semble qu'en cas d'erreur lors d'une transaction, MySQL (comme d'autres SGDB) va sauter toute une plage de valeur des séquences impliquées.
C'est un mécanismes de sécurité (aveugle et optimiste) pour éviter certains conflits.
Sergejack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h58.


 
 
 
 
Partenaires

Hébergement Web