[Frage] Fortlaufende Nummer erzeugen TYPO3-Version: -

  • 0 x
    18 Beiträge
    0 Hilfreiche Beiträge
    24. 09. 2015, 21:46

    Hallo,

    ich stehe vor dem Problem, dass ich eine fortlaufende Buchungsnummer erzeugen muss.

    Meine Überlegung bisher:

    Die Nummern werden in einer MySQL-Tabelle "config" gespeichert.

    Ich erstelle eine Klasse als Singleton, dort gibt es eine Funktion getBuchungsnummer, die folgendes macht:

    1. Abfrage der akutellen Buchungsnummer aus Tabelle "config"
    2. Buchungsnummer inkrementieren
    3. Buchungsnummer in Tabelle "config" speichern
    4. Buchungsnummer zurückgeben

    So weit, so gut. Doch was passiert, wenn zwei Buchungen gleichzeitig erstellt werden? Dann könnte es ja sein, dass getBuchungsnummer auch gleichzeitig ausgeführt wird und bei beiden Schritt 1 vor dem nächsten Schritt. Das würde bedeuten, ich bekomme zweimal dieselbe Nummer zurück.

    Wie kann ich das verhindern? Oder reicht es, dass die Klasse Singleton ist?

    Danke und viele Grüße
    Wonko


  • 1
  • runner78 runner78
    Padawan
    0 x
    35 Beiträge
    2 Hilfreiche Beiträge
    25. 09. 2015, 09:00

    Variante 1:
    Gib die letzte Buchung aus, sortiert nach Buchungsnummer und inkrementieren

    Variante 2:
    Buchungsnummer == uid
    (weniger Kontrolle)

  • 0 x
    18 Beiträge
    0 Hilfreiche Beiträge
    25. 09. 2015, 22:56

    Bei Variante 1 habe ich aber das gleiche Problem mit doppelten Buchungsnummern, wenn zwei Buchungen parallel angelegt werden und deshalb getBuchungsnummer mehrfach aufgerufen wird.

    Variante 2 finde ich nicht so gut, ich will die Kontrolle. :)

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    08. 10. 2015, 10:39

    Persistiere die BUchungen erst, wenn abgeschlossen, nimm die uid aus der Tabelle und formatiere Sie ggf noch mit führenden Nullen und weiteren ZEichen je nach Bedarf - ist absolut sicher und erfordert gar kein Coding wie das bei getBuchungsnummer o. ä. und es gibt keine übersprungenen Nummern.

    http://www.aemka.de/

  • 1