Registriert seit: 6. Apr 2005
10.109 Beiträge
|
Re: Datensätze verschieben
6. Mai 2005, 09:12
Hallo Herbert,
physisches Verschieben in einer relationalen Datenbank ist ein echtes Novum für mich. Ich verstehe deine Anfrage so, dass du die Reihenfolge deiner Sätze verändern möchtest - und das ist tatsächlich ein Standardproblem.
Üblicherweise liegt eine Tabelle mit Primärschlüssel PK und Sortierindex SI (candidate key) vor. Wegen der Basis 1 und wegen deines Beispiels nehme ich an, das die von dir gezeigte laufende Nummer der PK deiner Tabelle ist. Du brauchst dann noch eine Spalte SI vom Typ INTEGER, die von 0 ab fortlaufend befüllt wird. In deinem Beispiel gilt dann si = pk - 1.
Das Umordnen von Sätzen geschieht durch Manipulation des Sortierindex. Die Operation muss unbedingt durch eine Transaktion geschützt werden, da sonst die Integritätsbedingung (SI fortlaufend ab 0) nicht gewährleistet werden kann. Aus Performanzgründen solltest du für diesen Zweck eine Stored Procedure verwenden.
Wenn du versuchen willst die SP selbst zu implementieren, dann schau nicht in den Anhang. Meine Implementierung für Interbase OE erledigt die Verschiebung aus deinem Beispiel mit folgendem Befehl:
EXECUTE PROCEDURE MoveRecs(5, 12, 5)
Dabei werden die 5 Sätze an den Positionen 5 bis 9 hinter den Satz mit der Position 12 verschoben.
Grüße vom marabu
|