Seid gegrüßt!
Wenn ich eine Datensatz verschieben möchte, verschiebe ich erst alle Datensätze nach dem betreffenden Ziel um einen Zähler und ändere dann den Zähler des zu verschiebenden Datensatz auf das Ziel. Ist dieses Vorgehen so richtig?
vermutlich, aber stelle dabei sicher, dass deine Anwendung einen sauberen Transaktionskontext wahrt, sonst könnten sich verschiedene Operationen gegenseitig in die Queere kommen.
OK. Aber wie könnte ich das bei mySQL lösen? Ich habe mir mal sagen lassen (muss aber auch nicht stimmen), dass das durch eine bestimmte Tabellen-Art (myisam?) geklärt werden könnte. Stimmt das? Falls ja, welche Tabellenart wäre das?
Mal ein konstruiertes Szenario:
alle Datensätze sind der Reihe nach nummeriert / soritiert:
1,2,3,4,5......
a) Ich möchte jetzt Datensatz 5 nach 16 verschieben. Dabei aber
b) die jetzt entstandene Lücke bei 5 schließen und
c) nicht Datensatz 16 überschrieben sonder auf Platz 17 verschieben und alle folgenden auch um eins nach hinten.
Also habe ich folgende SQls:
erst c) UPDATE table SET count = count + 1 WHERE count >= 16
dann a) UPDATE table SET count = 16 WHERE count = 5
dann b) UPDATE table SET count = count - 1 WHERE count >= 5
Ist das so richtig?
Bis Später
RuD
________________________________________________________________
SelfCode: ie:% fl:( br:^ va:) ls:< fo:| rl:( n4:& ss:) de:> js:| ch:| mo:| zu:)