mysql daten und id's

chilliibean

Grünschnabel
Hallo!

Die Situation:
Ich habe eine mysql-tabelle, erste spalte ist id und dann folgen datenspalten. nun habe ich in meiner anwendung eine funktion zum löschen einzelner einträge.

Das Problem:
Wenn ich nu zum Beispiel das Objekt mit der id 5 lösche, bleiben die zeilen id 1,2,3,4,6,usw., die zeile mit id 5 verschwindet ganz. Ich will aber, daß die id 5 bestehen bleibt, nur die inhalte der folgenden zeilen einen aufrutschen und die letzte spalte, die dann nur noch eine id hat, aber sonst keinen inhalt, gelöscht wird.

Wer kann mir einen Vorschlag machen, wie ich das am besten/sinvollsten/einfachsten hinbekomme?

thx im voraus
c.
 
Hi,

für die Zukunft: Poste Fragen zum Thema "MySQL" doch auch in das dafür vorgesehen Forum.

Und zu deiner Frage, ich glaube kaum, dass dies ohne einen sehr großen Aufwand realisierbar ist. Aber wieso willst du überhaupt, dass bei der Löschung einer ID, alle Inhalte der höheren ID's eins runterrutschen ? Das ergibt meiner Meinung nach wenig Sinn....!?

bye
 
Ja sorry, hab ich zu spät bemerkt, das mit dem falschen forum.

und du hast das was falsch verstanden, ich will, daß alle inhalte einen RAUFrutschen, so daß der inhalt von id 6 dann in der leeren zelle zu id 5 wandert. ergo hat die letzte zeile der tabelle nur noch eine id ohne inhalt, und die soll weg.


Ich brauche diese funktion, weil ich auch eine funkt. zum verschieben von objekten habe. die funktioniert so, daß einfach die id der zu verschiebenden zeile mit der darüber oder darunter getauscht wird. und wenns id 5 ohne inhalt gibt, und ich id4 mit 5 tausche, kommt logischerweise mist dabei raus. deshalb darf ich weder ein gap in den id's haben, noch id's ohne inhalt... :/

Falls du ne bessere gesamtlösung parat hast, raus damit...

thx
c.
 
Also Tauschen geht auch wenn du keine durchgehende Ids hast ...

Aber damit du nach dem Löschen durchgehende Ids hast musst du die IDs
in der db "upzudaten"

Wenn du id 5 gelöscht hast
dann den:

update dbtabelle set id = (id - 1) where id >= '5'
 
Zurück