Выполняется ли CASCADE Delete как транзакция?

Я хочу выполнить каскадное удаление для некоторых таблиц в моей базе данных, но меня интересует, что происходит в случае сбоя при удалении чего-либо. Будет ли все откат?

Ответ 1

В целом¹, да, каскадные удаления выполняются в одной и той же транзакции (или подтранзакции) в качестве исходного удаления. Однако вы должны прочитать документацию своего SQL-сервера.

¹ Исключением является использование базы данных, которая не поддерживает транзакции, такие как MySQL с таблицами MyISAM.

Ответ 2

Каскадные удаления действительно являются атомарными, они не будут использоваться без этого свойства. Он находится в документации.

Ответ 3

Стоит отметить, что любое каскадное событие должно быть атомарным (т.е. с транзакцией). Но, как указывает Joel Coehoorn, проверьте документацию для своей базы данных.