Hello,
Ich möchte die Reihenfolge der Datenausgabe ändern, indem ich einfach die Ids ändere und dann danach sortieren lass.
Auf den ersten Blick mag Deine Idee ganz praktisch sein.
Grundsätzlich solltest Du Dir über verschiedene Dinge klar sein:
Unter ID eines Datensatzes verstehen bestimmt über 90% der Datanbank-Anwendungsentwickler den Primary Key des Datsnsatzes. Wenn der auch noch automatisch vergeben wird (autoincrement, stored procedure) dann sollte man ihn nicht mehr willkürlich ändern.
Aus diesem Grunde solltest Du also der Anzeige-Sortierung einen anderen Namen geben, z.B. 'lfd_nr' oder 'sort_key' oder was auch immer.
Um Datensätze nun in der Anzeigereihenfolge zu verändern, kann man diese numeriesche Anzeige-Sortierung zweier aufeinanderfolgender Sätze nun gegeneinander togglen. Das geht in EINEM SQL-statement mit einem Rechentrick. Damit ist es eine atomare Operation und es kann nichts schief gehen.
Wenn man die numerischen Anzeige-Sortierungen zweier weiter auseinander liegender Datensätze miteinander tauschen will, geht das über denselben Rechentrick.
Wenn es sich aber um alpfanumerische Anzeige-Sortierungen handelt, oder man erst über die ID der Sätze die Anzeige-Sortierungen ermitteln muss, wird es kompliziert.
Mittels Subselects oder SelfJoins (die nicht jedes DBMS unterstützt) geht das auch innerhal eines Query. Anderenfalls muss man durch geéinetes Locks (Datensaätz-Locks, Tabellen-Locks) die Queries binden.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau