views:

510

answers:

3

I want to perform cascade delete for some tables in my database, but I'm interested in what happens in case there's a failure when deleting something. Will everything rollback?

+11  A: 

In general¹, yes, cascade deletes are done in the same transaction (or subtransaction) as your original delete. You should read the documentation of your SQL server, though.

¹ The exception is if you're using a database that doesn't support transactions, like MySQL with MyISAM tables.

ΤΖΩΤΖΙΟΥ
In general? when are they not in a transaction?
HollyStyles
Whe the database doesn't support transasctions for example. See MySQL with MyISAM tables...
Cd-MaN
+1  A: 

Cascade deletes are indeed atomic, they would be of little use without that property. It is in the documentation.

HollyStyles
+1 for "they would be of little use without that property" :-) Very true.
ydobonmai
+1  A: 

It's worth pointing out that any cascading event should be atomic (i.e. with in a transaction). But, as Joel Coehoorn points out, check the documentation for your database.

AJ
Actually, it's not Joel Coehoorn that points that out. If unsure of the author, you better use "that answer" linking to its permalink.
ΤΖΩΤΖΙΟΥ