CASCADE Delete выполняется как транзакция? - PullRequest
10 голосов
/ 22 сентября 2008

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

Ответы [ 3 ]

14 голосов
/ 22 сентября 2008

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

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

3 голосов
/ 22 сентября 2008

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

1 голос
/ 22 сентября 2008

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

...