von AndreasJBittner » So, 11.04.2010 18:10
Hallo Andra,
die Autoincrement-Werte werden in RDBS in sog. sequences definiert, in Oracle zB legst Du für eine sequence einen Start-, Inkrement- und Endwert fest, die DB guckt dann DORT immer nach, welcher Wert als nächstes zur Verfügung steht, deshalb wird beim Löschen eines Datensatzes eben der nächste freie Wert aus der sequence genommen, die bekommt nämlich nicht mit, daß eine ID wieder frei geworden ist. Das Einfachste ist, Du ignorierst dieses Verhalten, da mit 2^32 der Zahlenbereich groß genug sein sollte. Du müßtest ja *immer* sicherstellen, daß nur der letzte Datensatz gelöscht wird, wenn Du nämlich "mittendrin" einen löscht und die sequence auf diesen Wert zurücksetzt, würde es beim übernächsten und den weiteren Datensätzen immer zu einem Fehler kommen.
Ich vermute Du beziehst Dich auf die interne OOo-Base, die immer größer wird. Kann es sein, daß Du halt immer mehr Daten in Deiner DB hast? Wenn Du die odb mal in zip änderst und mal reinschaust, wirst Du feststellen, daß dort die Tabellendefinitionen als SQL abgelegt sind und die Daten als INSERT-Statements - daher dürfte eigentlich nur durch mehr Daten die Dateigröße wachsen, weil gelöschte Tabellen und Datensätze ja nicht mehr mit abgelegt werden müssen.
HTH, Grüße
Andreas
Hallo Andra,
die Autoincrement-Werte werden in RDBS in sog. sequences definiert, in Oracle zB legst Du für eine sequence einen Start-, Inkrement- und Endwert fest, die DB guckt dann DORT immer nach, welcher Wert als nächstes zur Verfügung steht, deshalb wird beim Löschen eines Datensatzes eben der nächste freie Wert aus der sequence genommen, die bekommt nämlich nicht mit, daß eine ID wieder frei geworden ist. Das Einfachste ist, Du ignorierst dieses Verhalten, da mit 2^32 der Zahlenbereich groß genug sein sollte. Du müßtest ja *immer* sicherstellen, daß nur der letzte Datensatz gelöscht wird, wenn Du nämlich "mittendrin" einen löscht und die sequence auf diesen Wert zurücksetzt, würde es beim übernächsten und den weiteren Datensätzen immer zu einem Fehler kommen.
Ich vermute Du beziehst Dich auf die interne OOo-Base, die immer größer wird. Kann es sein, daß Du halt immer mehr Daten in Deiner DB hast? Wenn Du die odb mal in zip änderst und mal reinschaust, wirst Du feststellen, daß dort die Tabellendefinitionen als SQL abgelegt sind und die Daten als INSERT-Statements - daher dürfte eigentlich nur durch mehr Daten die Dateigröße wachsen, weil gelöschte Tabellen und Datensätze ja nicht mehr mit abgelegt werden müssen.
HTH, Grüße
Andreas