DelphiKing
King with a crown
- 20 April 2006
- 6.553
- 729
Aloha,
ich habe eine Tabelle mit einem id-Feld welches fortlaufend (1 .. n) durchnummeriert wurde. Nun werden aber häufig Datensätze aus der Tabelle gelöscht und es entstehen Lücken in dieser fortlaufenden Nummerierung.
Wenn nun ein neuer Datensatz eingefügt wird, soll dieser als id dann eine der freien id's eines gelöschten Datensatzes erhalten .. also quasi die Lücken wieder auffüllen.
Wie finde ich jetzt die erste Lücke, ohne in ner Schleife n Queries zu machen und zu schauen ob ein Datensatz gefunden wird? Ist leider etwas unperformant, wenn es da um 50000 Datensätze geht.
Die Notlösung wäre da im Moment wohl einmal die ganze Tabelle durchzugehen und alle gefundenen Lücken in ne zweite Tabelle zu schreiben, auf die dann zugegriffen werden kann. Das müsste halt immer mal wieder aktuallisiert werden. Ist aber nicht wirklich eine schöne Lösung m.E.n.
Liebe Grüße
flo
PS: Bitte keine Diskussion über den Sinn und Unsinn des Lückenfüllens bei ner "fortlaufenden" Nummerierung - ich muss es nunmal machen.
ich habe eine Tabelle mit einem id-Feld welches fortlaufend (1 .. n) durchnummeriert wurde. Nun werden aber häufig Datensätze aus der Tabelle gelöscht und es entstehen Lücken in dieser fortlaufenden Nummerierung.
Wenn nun ein neuer Datensatz eingefügt wird, soll dieser als id dann eine der freien id's eines gelöschten Datensatzes erhalten .. also quasi die Lücken wieder auffüllen.
Wie finde ich jetzt die erste Lücke, ohne in ner Schleife n Queries zu machen und zu schauen ob ein Datensatz gefunden wird? Ist leider etwas unperformant, wenn es da um 50000 Datensätze geht.
Die Notlösung wäre da im Moment wohl einmal die ganze Tabelle durchzugehen und alle gefundenen Lücken in ne zweite Tabelle zu schreiben, auf die dann zugegriffen werden kann. Das müsste halt immer mal wieder aktuallisiert werden. Ist aber nicht wirklich eine schöne Lösung m.E.n.
Liebe Grüße
flo
PS: Bitte keine Diskussion über den Sinn und Unsinn des Lückenfüllens bei ner "fortlaufenden" Nummerierung - ich muss es nunmal machen.