Выполняется ли КАСКАДНОЕ удаление как транзакция?

StackOverflow https://stackoverflow.com/questions/114163

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

Стоит отметить, что Любой каскадное событие должно быть атомарным (т. е.с помощью in a transaction).Но, как указывает Джоэл Коэхорн, ознакомьтесь с документацией к вашей базе данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top