Wiederverwendung von gelöschten Belegnummern

oernilein

Mitglied
Hallo, ich habe ein Problem.

In einem Buchhaltungsprogramm habe ich mehrere Buchungsdatensätze in die DB geschrieben. Dabei wird eine Belegnummer mit weggeschrieben.

Beispieldatensatz

ID | BELEGNR | DATUM | KONTO | BESCHREIBUNG | BETRAG

Nun sind in der Tabelle 4 Datensätze enthalten.
Belegnummer 1,2,3 und 4

Bei Insert der nächsten Buchung lass ich mir die letzte BELEGNR ausgeben und rechne 1 hinzu.

Wenn ich allerdings die Buchung 2 Lösche und eine Neue hinzufüge wird es ja die 5 verwendet. Ich möchte nun die lücken zwischendurch schließen (also die nächste Buchung sollte die BELEGNR 2 erhalten).

Kann es es ausser mit einer Schleife in der ich prüfe ob 1 vorhanden, ob 2 vorhanden ....usw. realisieren?
 
Hallo,

vielleicht so?
SQL:
SELECT t1.BELEGNR + 1
FROM TABELLE t1
LEFT JOIN TABELLE t2 ON (t2.BELEGNR = t1.BELEGNR + 1)
WHERE t2.ID IS NULL
ORDER BY t1.BELEGNR ASC
LIMIT 1
Sollte die kleinste freie Lücke zurückgeben oder eben den höchsten Wert + 1.

Grüße,
Matthias
 
Wenn ich allerdings die Buchung 2 Lösche und eine Neue hinzufüge wird es ja die 5 verwendet. Ich möchte nun die lücken zwischendurch schließen (also die nächste Buchung sollte die BELEGNR 2 erhalten).

Bitte mach das nicht
Diese Belegnummern sind schon extra fortlaufend, denn wenn du nun Nr. 2 löschst und den nächsten darauf einträgst, ist die Buchung definitiv weg.
Was ist aber wenn du die Buchung doch wieder brauchst? Retour, Garantie etc etc.
Und wenn ein Kunde mal ankommt mit der Buchungsnummer 2 und da ist auf einmal ein ganz anderer Datensatz?
Lasse diese Lücken, diese sollen schon sein, so gut wie immer
 

Neue Beiträge

Zurück