#789

Alte Zeilen in einem Zug ins Archiv verschieben — ohne Race Conditions

Das Archivieren alter Bestellungen in zwei Anweisungen (Einfügen ins Archiv, dann Löschen aus der Haupttabelle) ist anfällig für Race Conditions: Zwischen den Schritten kann jemand eine neue passende Zeile einfügen, oder ein Status kann sich ändern. Eine einzige CTE-basierte Abfrage erledigt dies atomar. Verschiebe alle bezahlten Bestellungen (status = 'paid'), die vor dem 1. Januar 2024 erstellt wurden, von orders nach orders_archive in einer einzigen Anweisung, ohne Zwischenzustand. Das Archiv soll die Spalten id, status und amount erhalten.

Beispiel der erwarteten Ausgabe

So sieht eine korrekte Antwort aus — ihre Zeilenanzahl ist eigenständig und muss nicht mit den Schematabellen übereinstimmen.

idamountstatus
1100.00paid
2200.00paid
3150.00paid

Dein Abfrageergebnis erscheint hier