Zitat Zitat von KM Beitrag anzeigen
Hallo,
in welcher Reihenfolge werden beim SQL-Update die Datensätze verarbeitet? Geht es hier nach der relativen Satznummer?
Die Antwort lautet an dieser Stelle ganz klar: "it depends"

Wenn Du alle Datensätze in der Tabelle ändern willst, wir vermutlich ein TableScann erfolgen und die Daten in Eingangsfolge verarbeitet.
Wenn Du jedoch WHERE-Bedingungn hast, kann es sein, dass auf die Daten am Schnellsten mit Hilfe eines Indices zugegriffen werden kann. In diesem Fall wird vermutlich ein Index Scan (oder Index Probe) erfolgen, bevor auf die Daten zugegriffen wird (Table Probe)
... und dann ist auch nicht sicher, dass die Daten in der Reihenfolge verarbeitet werde, in der Du sie gerne verarbeitet hättest.

Um die Satz-Nr. zu verändern, kannst Du wie Robi vorgeschlagen hat 2 Updates machen.
1. Du addierst die Anzahl der Datensätze zu der Satz-Nr. hinzu
2. Im zweiten Durchlauf subtrahierst du die Anzahl der Datensätze wieder und addiiert 1 dazu.

Wenn nur ein laufender Zähler gebildet werden, soll, die Reihenfolge in der die Nr. vergeben wird, jedoch egal ist, kannst Du mit einem SEQUENCE-Object arbeiten.
Code:
z.B. Update ...
         Set Nr = NEXT VALUE FOR SequenceName
         ...
Ansonsten bleibt Dir nur die Einzel-Satz-Verarbeitung, also CURSOR mit entsprechendem ORDER BY (Absteigende Reihnfolge, damit es keine doppelten Schlüssel gibt) im Select-Statement und dann den Update über WHERE CURRENT OF Cursor.

Birgitta