Lösungssuche für bestimmte Struktur/Anweisung

Hoi, sorry aber irgendwie ist mir zu meinem Problem kein aussagekräftiger Titel eingefallen!

Also erstmal das Drumrum:
Ich habe einen Stamm von Positionen die ich zu speichern habe, die Struktur der Positionen ist ähnlich einem Baum. Also eine Position kann wiederum weitere Positionen beinhalten, die Pfadtiefe ist nicht bestimmbar.

Beispiel:

  • Position 1
    • Position 1.1
    • Position 1.2
      • Position 1.2.1
      • Position 1.2.2
      • Position 1.2.3


  • Position 2
    • Position 2.1
    • Position 2.2
      • Position 2.2.1
      • Position 2.2.2
      • Position 2.2.3

Nun hab ich mir gedacht das ich dafür ja nur eine Tabelle brauche die in etwa so aufgebaut ist:
positionen

  • pos_id
  • parentpos_id
  • irgendwas

parentpos_id ist dann also eine Referenz auf eine andere Position (pos_id). Ein richtiges Problem bekomme ich jetzt aber bei der INSERT Anweisung, denn wenn ich jetzt obiges Beispiel einfügen wollte würde ich mit currval(pos_id) nicht weit kommen weil die sich ja auch mit einfügen der “Sub-Positionen” ändert. Es währe zwar möglich die Positionen einzeln einzufügen und dann jeweils zu gucken wie die aktuelle id nun ist und diese dann für die nächste Position zu verwenden. Das will ich aber nicht weil einerseits die ständigen Verbindungen zuviel Zeit verschwenden und zweitens das ganze nicht mehr klappt wenn zur gleichen Zeit eine zweite Person Positionen einfügt.

Kann mir jemand helfen irgendwie eine vernünftige Lösung zu finden?
Ich hatte schon versucht das ganze irgendwie über ne Zwischentabelle zu lösen aber hab leider auch keine funktionierende Lösung gefunden.

Bin für jede Hilfe dankbar :slight_smile:

Dann packe das in eine function(), die Du auf dem Server ausführst.

und zweitens das ganze nicht mehr klappt wenn zur gleichen Zeit eine zweite Person Positionen einfügt.

Sequencen sind eindeutig, da gibt es kein Problem.

Kann mir jemand helfen irgendwie eine vernünftige Lösung zu finden?
Ich hatte schon versucht das ganze irgendwie über ne Zwischentabelle zu lösen aber hab leider auch keine funktionierende Lösung gefunden.

Schau mal in meine del.icio.us - Linksammlung zu SQL und PostgreSQL (auch bei SQL!), da sollten ein paar Links zu Trees etc. stehen.


Andreas

THx für den Link, ich probiers jetzt mal nach dem hier >> klick mich << gezeigten zweitem Schema.

MFG