В чем проблема каскада внешних ключей с несколькими путями и циклами?

В MSSQL 2005 я просто ударил печально известное сообщение об ошибке:

Введение ограничения XXX FOREIGN KEY в таблицу YYY может привести к появлению циклов или нескольких каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, либо измените другие ограничения FOREIGN KEY.

Теперь в StackOverflow есть несколько тем об этом сообщении об ошибке, поэтому яу меня уже есть решение (в моем случае япридется использовать триггеры), но яМне любопытно, почему такая проблема вообще существует.

Насколько я понимаю, есть два сценария, которых они хотят избежать - цикл и несколько путей. Цикл был бы, где две таблицы имеют каскадные внешние ключи друг к другу. ОК, цикл может охватывать несколько таблиц, но это основной случай, и его будет легче проанализировать.

Множественные пути могут быть, когда TableA имеет внешние ключи для TableB и TableC, а TableB также имеет внешний ключ для TableC. Опять же - это минимальный базовый случай.

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

В других темах SO люди заходят так далеко, что обозначают каскады какрискованный» и заявить, что "разрешение каскадных путей - сложная проблема, Зачем? Где риск? В чем проблема?

Ответы на вопрос(5)

Ваш ответ на вопрос