Подтвердить что ты не робот

Должен ли я использовать правило CASCADE DELETE?

Дубликат: Когда/зачем использовать каскадирование в SQL Server?

Я всегда был слишком напуган, чтобы использовать DELETE CASCADE, но по мере того, как я становлюсь более уверенным (ленивым: D), я думаю, насколько это плохо, лучше ли использовать его или я должен его избегать очистить мои внешние ключи и т.д. старомодным способом (с хранимыми процедурами)?

4b9b3361

Ответ 1

ON DELETE CASCADE - это хорошо, но только тогда, когда зависимые строки действительно являются логическим расширением удаляемой строки. Например, для DELETE ORDERS, чтобы удалить связанные ORDER_LINES, достаточно ОК, потому что явно вы хотите удалить этот порядок, который состоит из заголовка и некоторых строк. С другой стороны, DELETE CUSTOMER не должен удалять связанные ORDERS, потому что ORDERS важны сами по себе, это не просто атрибуты клиента.

Один из способов подумать об этом: если я выпущу DELETE X, и он также удалит Y, я буду счастлив или недоволен? И если я выдаю DELETE X, и мне сказали: "Не могу удалить X, потому что существует Y", буду ли я рад защите или раздражен при непостоянстве?

Ответ 2

Я предпочитаю контролировать то, что удалено (явным образом объявляю его), поэтому я обычно предпочитаю удалять с помощью хранимых процедур, а не использовать каскадные удаления.