Ik heb een tabel met een order id kolom. Die kolom ziet er als volgt uit:
Bijvoorbeeld: 33.1000
33 is het id van de gebruiker, en 1000 is het aantal orders (totaal, dus 33.1000 kan worden opgevold door bijvoorbeeld 50.1001, 62.1002 etc).
Het account id sla ik los op in de order tabel maar ik zou niet weten hoe ik die plak aan een order id kolom met daarnaast een auto increment na de punt die begint bij 1000.
Het gaat erom dat een getal oploopt, je kan voor de punt alles zetten wat je wilt. Een datum bijvoorbeeld of een prefix zoals order-. In dit geval een account id, volgens mij maak ik het me niet moeilijk zo hoor. Ik vind dit ook wat mooier staan op een factuur bijv, dan alleen: 1001
Als je prefix een woord is, dan is het geen probleem. Een nummer lijkt me echter een ander verhaal, want dat kan voor verwarring zorgen. Sowieso zou ik het eerst even navragen bij de Belastingtelefoon.
Dit kan prima:
ORD-2430
ORD-2431
ORD-2432
Daar zal de Belastingdienst niet moeilijk over doen.
Dit zullen ze vermoed ik niet kunnen waarderen:
22.2430
312.2431
185.2432
Ik zou het echt even navragen.
Maar wat is nu precies het probleem eigenlijk? Je kunt toch gewoon die waardes samenvoegen met een punt ertussen?
?Onbekende gebruiker
04-02-2021 15:40
Wat je zoekt is CREATE SEQUENCE, en nee, dat werkt niet op MySQL.
Wel op alle andere databases zoals PostgreSQL, en zelfs op MariaDB.
Ik zie geen reden om nog MySQL te blijven gebruiken... (hint :-))
Het gaat de Belastingdienst, of meer algemeen accountants, om de audit trail: er mogen geen facturen spontaan verschijnen of plotseling verdwijnen, want dan kan er bijvoorbeeld omzet worden verzwegen.
Naast de doorlopende factuurnummering van jaar op jaar, zijn er twee minder elegante nummeringen die ook lijken te worden toegestaan: een doorlopende nummering per boekjaar (meestal gelijk aan een kalenderjaar) en een doorlopende nummering per bedrijfsactiviteit (bijvoorbeeld per filiaal, omdat ze daar zelf nummerende kassa's hebben).
De hier gebruikte nummering per klant vanaf 33.1000 voor klant 33 roept vraagtekens op omdat (a) je moet kunnen verantwoorden waar dan factuur 33.0001 tot en met 33.0999 voor klant 33 zijn gebleven en (b) je moet kunnen verantwoorden wie precies klant 1 tot en met 33 zijn.
Dat zou ik zo niet doen. Niet alleen is het hoogst ongebruikelijk (en onbekend maakt onbemind). Het is ook nergens voor nodig: de debiteurgegevens moet je sowieso al op de factuur vermelden, dus facturen nummeren per klant is dubbelop.
Dat je een dubbele auto_increment nodig hebt, is code smell, de stank van code die stinkt.
En als je dan toch iets afwijkends doet? Registreer dan altijd wie wat wanneer waarom doet. Daarmee heb je zelfs bij uitzonderlijke afwijkingen nog steeds een controleerbare audit trail. Daarvoor zijn logs bijvoorbeeld bedoeld.