J'ai une table de factures qui stocke un seul enregistrement pour chaque facture, avec la colonne id (int AUTO_INCREMENT
) étant la clé primaire, mais aussi le numéro de référence de la facture.MySQL PhpMyAdmin: Alter AUTO_INCREMENT et/ou INSERT_ID
Maintenant, malheureusement, j'ai dû migrer manuellement certaines factures générées sur un ancien système qui ont un identifiant à cinq chiffres, au lieu d'un à quatre chiffres que le système actuel utilise. Cependant, même lorsque je réinitialise le AUTO_INCREMENT
via PhpMyAdmin (opérations de table) à l'ID à quatre chiffres suivant, il insère toujours un chiffre à cinq chiffres étant l'ID supérieur actuellement dans le tableau plus un.
De la recherche autour, il semblerait que je dois réellement changer le insert_id
aussi bien que le AUTO_INCREMENT
? J'ai essayé d'exécuter ALTER TABLE invoices SET insert_id=8125
ainsi que ALTER TABLE invoices insert_id=8125
mais aucune de ces commandes ne semble être valide.
Quelqu'un peut-il expliquer la bonne façon que je peux réinitialiser le AUTO_INCREMENT
afin qu'il insérer des enregistrements avec son 8125
partir id, puis quand il arrive à 10962
il sautera au cours des quatre disques que j'ai ajouté manuellement et continuer id séquentiels de à partir de 10966
. Si cela ne passe pas par-dessus 10962
- 10966
alors cela n'a pas vraiment d'importance, car l'entreprise ne génère pas autant de factures chaque année, donc cela se produira dans une année suivante, ce qui ne causera pas de problème, je l'espère.
J'apprécierais vraiment toute aide avec cette situation collante dans laquelle je me suis retrouvé! Merci beaucoup
Nous vous remercions de vos précieux commentaires. S'il y a un moyen de faire le travail correctement, sans recoder mon système et ajouter un champ invoiceRef supplémentaire, ce serait préférable. Le dernier processus que vous avez décrit n'aiderait malheureusement pas puisque la dernière facture (10k +) n'est pas l'identifiant dont je souhaite que la numérotation continue (8k +) l'est. De plus, changer le 'AUTO_INCREMENT' n'a aucun effet car il semble que MySQL l'ignore et élabore le prochain' insert_id' basé sur le dernier identifiant de facture (ce qui n'est pas ce dont j'ai besoin dans ce cas!) –
C'est pourquoi auto_increment est généralement mauvais choix pour les numéros de référence de facture si les numéros doivent être réutilisés. C'est une clé primaire de substitution, cela a du sens pour la base de données mais pas pour l'entreprise.Si le seul problème est que le client n'aime pas voir les écarts entre les factures, alors c'est une nuisance plus qu'un problème. Essayer de le réparer pourrait créer de vrais problèmes! Je suggère de ne rien faire et d'essayer d'expliquer les raisons à votre client. Si cela ne marche pas, créer un autre champ et renuméroter les factures devrait faire l'affaire. –
Ok, j'ai réussi à parler à mon client et il est heureux de continuer avec les numéros de facture 10k + heureusement. Dans le futur, je n'utiliserai que «id int AUTO_INCREMENT» pour la gestion de la base de données et les clés étrangères, et non un champ qui est affiché à l'utilisateur! Merci de votre aide. –