Index aktualisieren
-
Hallo
habe eine Frage dazu wie ich den Index einer AUTOINCREMENT Spalte nach dem Löschen einer beliebigen Zeile aktualisieren kann. z.B.:
INDEX Wert
----------
1 sdf
2 ewf
3 ldkf <- den hier löschen
4 nmvund dann folgendes Ergebnis:
INDEX Wert
----------
1 sdf
2 ewt
3 nmvBrauche ich dafür evtl einen bestimmten Tabellentyp?
Gruß
Patrick
-
Mit Autoincrement ist das definitiv nicht möglich und es ist auch nicht der Sinn des Autoincrement-Feldes.
Dieses Feld soll ja eine eindeutige ID für den Datensatz bereitstellen (in den meisten Fällen jedenfalls). Wenn nun die ID wild geändert werden, ist ja die Konsitenz der (evtl.) verlinkten Datensätze nicht mehr gegeben.Lösen kannst du das nur über ein normales int-Feld.
Fürs einfügen nimmst du dir dann einfach den MAX(Index)-Wert und beim löschen machst du einfach nen Update:UPDATE tabell SET index=index-1 WHERE index>gelöschterindex;
-
Richtig,
allerdings solltest du die Datensätze nicht einfach so löschen. Denn wenn du den RK in anderen Tabellen noch als FK benutzt, kommt es zu Dateninkonsistenten. Du solltest also dann zumindest darauf achten, in allen Tabellen die betroffenen Datensätze zu löschen.
Darüber hinaus stört es doch nicht wenn ein Wert mal nicht da ist oder?
Falls du nicht weisst was ich meine
Tabelle Projekt
id Bezeichnung
1 3d- engine
2 content managment system
3 mp3- player
4 hello worldTabelle Mitarbeiter
id name alter projekt (FK)
1 mueller, gerald 45 2
2 gates, bill 71 2
3 meyer, antonio 17 2
4 gerke, dominik 5 3
5 gerald, heinz 21 1So an diesem Beispiel siehst du das 1..n Mitarbeiter an einem Projekt arbeiten können. Wenn du Allerdings Projekt 2 löschst, dürfen auch keine Mitarbeiter mehr an Projekt 1 arbeiten!!! Darum musst dich also auch kümmern, nur so nebenbei...
Aber ob das nächste Projekt jetzt die id 3 oder 3123 kriegt ist doch scheiss egal
-
Vielen Dank für eure Hilfe an meiner Datenbank, ihr habt mir sehr geholfen!
Gruß Patrick