Как зафиксировать каскадное удаление данных?

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

Каскадное удаление происходит, как известно, за счет того, что у ваших внешних ключей стоит ON DELETE CASCADE. На мой взгляд, тут лучше ON DELETE NO ACTION, что заставит Вас руками удалять предварительно все связанные данные, которые ссылаются на удаляемый объект, что как раз и приведет Вас у полному контролю процесса удаления с фиксацией транзакций, с записью контекстной информации и т.п.

А вообще, бизнес обычно не разрешает удалять, только отметить как удаленный, с сохранением информации о том, кто, когда. Тут мы делаем просто UPDATE и ставим нужные поля, но, делаем опять же, для всех связанных данных, которые зависят от удаляемого объекта.

1 Like