lücken suchen

melmager

Erfahrenes Mitglied
also ich habe eine tabelle in der jede menge gelöscht und eingefügt wird

wenn ich eine autoincrement feld habe wird ja immer der nächst grössere id eingegeben

id = 1
id = 2
id = 4
id = 5

wenn ich neu einfüge mach er ja den neuen eintrag mit id = 6 - mit der zeit wird die id ja recht hoch das möchte ich vermeiden

wie ermittle ich die fehlende 3 ?

muss ich wirklich alle datensätze einzeln durchforsten um die fehlende 3 zu finden um die beim insert zu nutzen -?-
oder hat einer ne gute idee??
 
mit autowerten geht das (soweit ich weiss) gar nicht, weil die vom dbms verwaltet werden. nimm doch einfach ein normales int und bau dir den schlüssel selbst zusammen.

um die lücke rauszukriegen, nimmst du dir den primärschlüssel vom ersten datensatz und vergleichst den mit dem primärschlüssel vom zweiten datensatz. wenn der unterschied grösser als 1 ist, besteht da eine lücke. wenn nicht, nimmst du dir den schlüssel vom zweiten datensatz und vergleichst den mit dem schlüssel vom dritten datensatz. und so weiter.

oder du zählst sofort alle datensätze neu hoch, wenn einer gelöscht worden ist. das ist eigentlich einfacher als die erste methode, setzt aber vorraus, dass du bei einem bestimmten wert anfangen willst.
 
asphyxia hat gesagt.:
mit autowerten geht das (soweit ich weiss) gar nicht, weil die vom dbms verwaltet werden. nimm doch einfach ein normales int und bau dir den schlüssel selbst zusammen.

um die lücke rauszukriegen, nimmst du dir den primärschlüssel vom ersten datensatz und vergleichst den mit dem primärschlüssel vom zweiten datensatz. wenn der unterschied grösser als 1 ist, besteht da eine lücke. wenn nicht, nimmst du dir den schlüssel vom zweiten datensatz und vergleichst den mit dem schlüssel vom dritten datensatz. und so weiter.

bedeute ja auch ich muss jeden einzelen datensatz anfassen ....

oder du zählst sofort alle datensätze neu hoch, wenn einer gelöscht worden ist. das ist eigentlich einfacher als die erste methode, setzt aber vorraus, dass du bei einem bestimmten wert anfangen willst.

geht nicht id ist natürlich ein fremdschlüssel von 2 andern tabellen ..
also ich darf keine vorhandene id ändern :) nur nicht vorhandene nutzen ...*g*
 

Neue Beiträge

Zurück