Fortlaufende Rechnungsnummer mit PHP & MySQL

Strafi

Erfahrenes Mitglied
Hallo,

folgendes Problem:

Ich habe eine Tabelle 'rechnungen' deren ID natürlich auto_increment ist. Nun möchte ich noch ein Rechnungsnummer die sich fortlaufend gestalten soll. Sicher die ID ist fortlaufend, aber manche Kunden möchten jedes Jahr das wieder Zurücksetzen und das geht dann mit der ID natürlich nicht.

Dazu kommt noch das es passieren kann das mehre Rechnung von unterschiedlichen Mitarbeitern erstellt werden können, das heißt wenn ich vorher mit einem SELECT schaue welche Rechnungsnummer ist und dann um eins erweitere und dann die Rechnung anlege, kann Theoretisch schon eine andere Rechnung ausgestellt worden sein und schon kommen 2 Rechnungsnummern vor.

Table Lock ist für mich auch keine Option weil zu viele Mitarbeiter an so einer Software zu gleichen Zeit arbeiten können. Es muss also gleich beim Insert passieren. Die Rechnung kann auch schon mal angelegt werden, das sie ein Status besitzt und wenn der auf erledig geändert wird, wird auch der Rechnungeintrag in der DB gelockt.

Was habt ihr für Ideen? Ich arbeite mit PHP, MySQL und den Mapper MySQLi.


Grüße
 
Zuletzt bearbeitet:
Es gibt das Keyword unique für Spalten:
https://technet.microsoft.com/de-de/library/ms191166(v=SQL.105).aspx
Wenn Rechnungsnummer unique ist, kann die Nummer nur einmal vergeben werden.
Mit Autoincrement kannst du die Spalte Rechnungsnummer automatisch weiterzählen lassen.
Folgende Vorgehensweise würde funktionieren:
Die Spalte Rechnungsnummer muss unique sein und auf Autoincrement stehen.
  1. Zuerst leere Rechnung anlegen, dabei generiert SQL eine neue RE Nummer.
  2. Rechnungsnummer abfragen und ins Rechnungsformular eintragen
  3. Mitarbeiter füllt Formular aus
  4. Rechnung wird mit den Daten gespeichert
Damit hast du ein bisschen Overhead, weil du zweimal den selben Eintrag bearbeitest, aber du stellst sicher, das jede Nummer nur einmal vergeben ist und die Rechnungsnummer wird automatisch von SQL generiert. Außerdem können unterschiedliche Mitarbeiter so nicht auf die gleiche Rechnung zugreifen.
 
Hi,

Sehr schön! Dein Thread hat mich in die richtige Richtung geschupst. Ich lege nun erstmal eine Rechnung an, die Mitarbeiter können daran in Ruhe arbeiten und wenn die Rechnungen dann den Status fertig bekommen, wird die Rechnungsnummer generiert und die Rechnung für weitere Bearbeitungen gesperrt.

Danke dir!
 

Neue Beiträge

Zurück