Halihallo Thomas
Das Problem hast du nur bei Integern. Nimmst du eine Timestamp und sortierst du diese
aufsteigend, hast du die richtige Reihenfolge und kannst die Positions implizit durch
einen Counter in der Programmiersprache setzen; damit umgehst du das Zeitaufwendige
sortieren und neubelegen der Positionen. Eine von einigen Ideen, die ich gestern hatte.
Ziel der ganzen Sache: Du musst erreichen, dass die Unterposition _redundant_ wird.
Du musst versuchen, diese irgendwie implizit "berechnen" zu können; eg. durch Timestamp
Sortierung. Du musst dich von der Unterposition in der Ursprungsform trennen, ansonsten
wirst du immer die gesamte Tabelle überarbeiten müssen (naja, Worst Case).
Vielleicht noch die anderen Überlegungen. Leider hatte ich keine Zeit diese auszuarbeiten
und/oder zu überprüfen:
MySQL unterstützt Variablen, diese können, wenn ich mich erinnere über SELECT @var:=5;
gesetzt werden. Eventuell kannst du mit einem UPDATE die Positionen automatisch
hochzählen lassen (wäre möchlich, dass UPDATE POS = (@var:=@var+1) oder so funktionieren
könnte, obwohl ich das als unwahrscheinlich einstufe).
Man könnte einen Umweg über einen VIEW machen (in MySQL eine temporäre Tabelle, oder eine
Hilfstabelle); weiss zwar nicht, was das bringt, aber wäre u. U. von Vorteil...
Hm. Was hatte ich da noch? - Eben, die Timestamp-Variante. Ach ja, POS als autoincrement,
dann zählt das ja immer automatisch hoch; naja, das Einfügen ist dann zwar unmöglich,
wenn man nicht noch eine Extrainformation (eg. Timestamp) hat.
Das sind so meine Vorschläge um dies evtl. vollkommen ohne Scripte hinzukriegen. Aber der
Umweg über ein Script ist vielleicht doch ratsamer, also derartige kurriosen Konstrukte
zu verwenden...
Viele Grüsse
Philipp