Я предпочитаю использовать «мягкие» удаления, если это возможно.Что означает наличие удаленного битового столбца в таблице.Таким образом, когда вы удаляете, вы фактически запускаете оператор обновления для таблицы, чтобы установить для параметра Удалено значение 1.
Однако, если бы я хотел удалить строки, я бы использовал явный оператор удаления вместо ON DELETE CASCADE
foreignключи.
delete Observation
where ObservationTypeId = 1
delete ObservationType
where ObservationTypeId = 1
Я стараюсь избегать использования неявного ON DELETE CASCADE
, так как это может привести к скрытым опасным неожиданным удалениям.Если вся база данных построена на внешнем ключе каскадного удаления, кто-то по ошибке может удалить содержимое всей базы данных, просто выполнив команду удаления для одной таблицы, на которую есть ссылки во всех других таблицах.Короче говоря, я нахожу ON DELETE CASCADE
склонным к ошибкам решением.