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