Выполняется ли КАСКАДНОЕ удаление как транзакция?
Вопрос
Я хочу выполнить каскадное удаление для некоторых таблиц в моей базе данных, но меня интересует, что произойдет в случае сбоя при удалении чего-либо.Все ли вернется на круги своя?
Решение
В общем случае 1, да, каскадные удаления выполняются в той же транзакции (или подтранзакции), что и ваше исходное удаление.Однако вам следует ознакомиться с документацией вашего SQL server.
1 Исключение составляет, если вы используете базу данных, которая не поддерживает транзакции, например MySQL с таблицами MyISAM.
Другие советы
Каскадные удаления действительно являются атомарными, без этого свойства от них было бы мало толку.Это есть в документации.
Стоит отметить, что Любой каскадное событие должно быть атомарным (т. е.с помощью in a transaction).Но, как указывает Джоэл Коэхорн, ознакомьтесь с документацией к вашей базе данных.