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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top