J'ai une table MySQL avec un champ de clé primaire qui a AUTO_INCREMENT activé. Après avoir lu d'autres messages sur ce site, j'ai remarqué que d'autres personnes avaient le même problème, avec des réponses variées. Certains recommandent de ne pas utiliser cette fonctionnalité, d'autres affirment qu'elle ne peut pas être "réparée".
Je l'ai fait :
table: course
fields: courseID, courseName
Exemple : nombre d'enregistrements dans la table : 18. Si je supprime les enregistrements 16, 17 et 18, je m'attends à ce que le prochain enregistrement saisi ait l'ID de cours 16, mais il sera 19 car le dernier ID de cours saisi était 18.
Mes connaissances en SQL ne sont pas extraordinaires, mais existe-t-il un moyen de rafraîchir ou de mettre à jour ce compte avec une requête (ou un paramètre dans l'interface phpMyAdmin) ?
Cette table sera liée à d'autres dans une base de données.
Compte tenu de tous ces conseils, j'ai décidé d'ignorer ce "problème". Je vais simplement supprimer et ajouter des enregistrements tout en laissant l'incrémentation automatique faire son travail. Je suppose que le numéro n'a pas vraiment d'importance puisqu'il n'est utilisé que comme identifiant unique et qu'il n'a pas de (comme mentionné ci-dessus). entreprise sens.
Pour ceux que j'ai pu confondre avec mon message original : Je ne souhaite pas utiliser ce champ pour savoir combien d'enregistrements je possède. Je voulais simplement que la base de données ait un aspect soigné et un peu plus de cohérence.
3 votes
Que pensez-vous qu'il se passe si vous supprimez seulement l'enregistrement 16 ?
0 votes
Bon point ! J'aurais dû le mentionner. Idéalement, il faudrait tout décaler d'un
0 votes
Je me heurte à un problème qui est, d'une certaine manière, l'inverse du vôtre. En d'autres termes, j'ai un
ENTITY
table et unENTITY_LOG
table. Chaque fois que j'insère, mets à jour ou supprime quelque chose de la tableENTITY
je consigne cette activité dans leENTITY_LOG
ainsi que le nom de l'entitéId
. Récemment, un utilisateur a supprimé un tas d'entrées dans la base de données de laENTITY
et les entrées correspondantes ont été effectuées dans la table de journalisation. Aujourd'hui, lorsqu'un autre utilisateur a tenté d'ajouter une nouvelle entrée dans la tableENTITY
le tableau généréId
se trouve être la même qu'une entité précédemment supprimée ! J'utilise JdbcTemplate et InnoDB.0 votes
@WebUser Je ne vois pas pourquoi cela se produirait. Je suis presque sûr (et je m'y attendrais) que MySQL s'occupe de tout cela. Je ne suis pas sûr de l'aspect JdbcTemplate des choses - peut-être que quelque chose là-dedans le fait ( ?). Bonne chance !
0 votes
@OmidTahouri, je suis tout à fait d'accord avec cela. C'est certainement un problème étrange. Je vais donc essayer de reproduire le problème et de passer en revue le code. Merci pour la confirmation !
0 votes
@WebUser : Apparemment, InnoDB ne persiste pas le numéro d'identification suivant. Donc, la prochaine fois qu'InnoDB démarre, il recherche simplement l'ID maximum utilisé.
0 votes
Ne jamais recycler les valeurs clés. Vous rencontrerez de gros problèmes. Voir ci-dessous.
0 votes
@Kev : sur cette ancienne question, vous avez supprimé la réponse de l'OP, et l'avez ajoutée à la question. Nous essayons d'encourager les PO à ajouter leur réponse, et de ne pas écraser les réponses dans l'édition d'une question (pour des raisons d'exactitude, en particulier avec l'API). Seriez-vous d'accord pour que je fasse l'inverse ici ?