CASCADE Delete viene eseguito come transazione?
Domanda
Voglio eseguire l'eliminazione a cascata per alcune tabelle nel mio database, ma sono interessato a cosa succede in caso di errore durante l'eliminazione di qualcosa. Rollback di tutto?
Soluzione
In generale¹, sì, le eliminazioni in cascata vengono eseguite nella stessa transazione (o sottotransazione) dell'eliminazione originale. Tuttavia, dovresti leggere la documentazione del tuo server SQL.
¹ L'eccezione è se si utilizza un database che non supporta le transazioni, come MySQL con le tabelle MyISAM.
Altri suggerimenti
Le eliminazioni in cascata sono effettivamente atomiche, sarebbero di scarsa utilità senza quella proprietà. È nella documentazione.
Vale la pena sottolineare che qualsiasi evento a cascata dovrebbe essere atomico (cioè con in una transazione). Ma, come sottolinea Joel Coehoorn, controlla la documentazione per il tuo database.