#789

Spostare le righe vecchie nell'archivio in un colpo solo, senza race condition

Archiviare gli ordini vecchi con due istruzioni (inserimento nell'archivio, poi eliminazione dalla tabella principale) è soggetto a race condition: qualcuno può inserire una nuova riga corrispondente tra i due passaggi, oppure uno stato può cambiare. Un'unica query basata su CTE gestisce tutto in modo atomico. Sposta tutti gli ordini pagati (status = 'paid') creati prima del 1 gennaio 2024 da orders a orders_archive in un'unica istruzione, senza stato intermedio. L'archivio deve ricevere le colonne id, status e amount.

Esempio di output atteso

Ecco come appare una risposta corretta — il suo numero di righe è a sé stante, non deve corrispondere alle tabelle dello schema.

idamountstatus
1100.00paid
2200.00paid
3150.00paid

Il risultato della tua query apparirà qui