Natürlich kann Firebird anonyme Blöcke und es gibt auch Transaktionen. Da können nicht zwei (oder mehr) gleichzeitig die gleichen Datensätze unterschiedlich ändern!
..
Ich wollte nur sagen: Es ist eine ungeteste Lösung quasi nach Lehrbuch*, ich nutze Firebird nicht in der Praxis nicht.
Zu meinem eigenen Codevorschlag:
Die Reihenfolge ist tatsächlich besser andersrum, wie hoika schrieb, dann ist das Update der Ordnungszahl "richtiger".
* Damit ist sowohl die Firebird Doku gemeint, als auch der Vorgang an sich, der minimalinvasiv ist, also wahrscheinlich sehr schnell.
Wenn es klappt und verstanden ist (Prinzip), kann man natürlich auch anfangen echte SP für sowas anzulegen statt mit anonymen Blöcken zu arbeiten.