Mailinglisten-Archive |
>Hi, >> wie kann man eine autoincremet-Tabellenspalte >> immer auf dem tiefststand halten, (zB. wenn eine >> Zeile gelöscht worden ist) resp gibt es dazu >> überhaupt eine legitimierung, oder muss man da >> selber hand anlegen? >ich hatte das so verstanden, daß wenn Du z.B. 10 Einträge >hast (ID 1-10) und dann die 5. löschst. Dann sollte beim >Einfügen einer neuen Zeile die ID nicht 11 sondern 5 sein. >Das macht ja Sinn und gibt auch kein Problem mit Referenzen. >Nur, wie sucht man danach? >Gruß, Reinhold Hi Reinhold, Ich denke es wird mal Zeit etwas grundsätzliches über Autoincrementfelder zu sagen. Diese werden zur eindeutigen Identifizierung eines Datensatzes verwendet. Bei Datenbanken wie Oracle, Ms-SQL, Jet-Modul von Access, Interbase etc.. ist es im Gegensatz zu mysql nicht möglich das Autoincrement - Feld zu ändern. Das hat auch seinen Sinn. Werden nähmlich die Werte dieser Felder geändert, stimmen die Referenzen nicht mehr. In meinen DB's sind den Anwendern diese Werte überhaupt nicht bekannt, die ID's die der Anwender zu sehen bekommt werden generiert und in einem seperaten indizierten unique Feld abgelegt. Mit den autoincrement - Feldern werden die Referenzen ermittelt. Es ist dabei vollkommen egal welchen Wert diese Felder letztendlich haben und es macht auch absolut keinen Sinn diese Werte zu ändern. Wenn jetzt laufende Nummern aufgefüllt werden sollen (Buchungsnummern oder sowas...), habe ich bei meiner DB kein Problem. Wird ein DS gelöscht, wird dieser nicht aus der Tabelle entfernt, sondern als gelöscht markiert. Jetzt lassen sich erstens falsche Löschaufträge nochmal rückgängig machen, und zweitens die gelöscht markierten DS mit einer einfache Query auslesen. Mit einem Order richtig sortiert wird dann z. B. die niedrigste ID ermittelt, der alte DS mit Referenzen entgültig gelöscht und anschliessend mit dieser ID der neue DS angelegt. Hier muss ich in keinem Fall ein autoincrement - Feld geändert werden. Und wenn jetzt einer einwirft er würde soviele DS speichern, das ihm der autoincrement - Zähler überläuft, dann soll er sich vorher mal Gedanken über seine DB - Struktur machen. MFG Wolfgang --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive