Plusieurs milliers d'enregistrements sur la bdd

Plusieurs milliers d'enregistrements sur la bdd - PHP - Programmation

Marsh Posté le 11-04-2008 à 10:24:42    

Bonjour,
sur un programme php sur lequel je suis entrain de bosser, je viens de me rendre compte que tôt ou tard il y a aura plusieurs milliers d'enregistrements.
Il y a un truc qui m'inquiète, c'est que les "id" de chaque table de la base de données (mysql) sont declarés en "int".
 
Est-ce qu'il y aura un problème plus tard, sachant que les id s'auto-incrément et et que les "int" ont une portée limitée ?
 
edit : ha ben non j'ai rien dit, selon cette page http://dev.mysql.com/doc/refman/5. [...] types.html ça va jusqu'à 2147483647.
 
Cela dit je me demande quand même, si on déclare en "tinyint" par exemple et qu'on arrive au bout des 32767 enregistrements, il se passe quoi par la suite ?
 
Aussi une autre question : est-il possible de réinitialiser le compteur des id ? Par exemple, j'ajoute un nouvel enregistrement et il commence à 259. y a t-il moyen de le faire recommencer à 0 ? (en ayant au préalable supprimé les enregistrements de la table).


Message édité par tostiere le 11-04-2008 à 10:28:16
Reply

Marsh Posté le 11-04-2008 à 10:24:42   

Reply

Marsh Posté le 11-04-2008 à 10:36:53    

1- faut etre vraiment radin pour declarer un champ auto increment en tiny int
 
2-

Citation :

To change the value of the AUTO_INCREMENT  counter to be used for new rows, do this:
 
ALTER TABLE t2 AUTO_INCREMENT = value;
 
You cannot reset the counter to a value less than or equal to any that have already been used. For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one. For InnoDB, you can use ALTER TABLE ... AUTO_INCREMENT = value as of MySQL 5.0.3, but if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.


http://dev.mysql.com/doc/refman/5. [...] table.html


---------------

Reply

Marsh Posté le 11-04-2008 à 11:23:28    

Tinyint ça va de 0 à 255 en non signé, pas 32767... Ca, c'est smallint en non signé

Reply

Marsh Posté le 11-04-2008 à 12:27:19    

Flo850 > merci pour ta réponse c'est ce que je voulais :)
soulmanto > heu... oups effectivement :D

Reply

Marsh Posté le 11-04-2008 à 12:34:55    

tostiere > Quand arrive au nombre maximum de ta colonne, alors toutes les insertions suivantes planteront avec un message comme quoi l'id unique existe déjà.
 
Explication : 255 + 1 = 256 , mais comme le stockage est sur 8 bit alors 256 devient 0 qui est déjà pris par la première ligne. A noter que si le 0 n'est pas déjà pris alors le problème arrivera à 256 + 1 = 257 qui devient 1 pour la même raison ou 257 + 1 qui devient 2 ou ... ).

Reply

Marsh Posté le 11-04-2008 à 15:24:16    

Omega2 > merci, encore un mystère (pour moi) qui vient d'être résolu ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed