Я хочу выполнить каскадное удаление для некоторых таблиц в моей базе данных, но меня интересует, что происходит в случае сбоя при удалении чего-либо. Будет ли все откат?
Выполняется ли CASCADE Delete как транзакция?
Ответ 1
В целом¹, да, каскадные удаления выполняются в одной и той же транзакции (или подтранзакции) в качестве исходного удаления. Однако вы должны прочитать документацию своего SQL-сервера.
¹ Исключением является использование базы данных, которая не поддерживает транзакции, такие как MySQL с таблицами MyISAM.
Ответ 2
Каскадные удаления действительно являются атомарными, они не будут использоваться без этого свойства. Он находится в документации.
Ответ 3
Стоит отметить, что любое каскадное событие должно быть атомарным (т.е. с транзакцией). Но, как указывает Joel Coehoorn, проверьте документацию для своей базы данных.