SQL Server «Удаление в таблице может вызвать циклы или несколько каскадных путей» - PullRequest
0 голосов
/ 14 июля 2010

У нас есть проект ASP.NET MVC2 с отображениями EntityFramework. альтернативный текст http://www.freeimagehosting.net/uploads/552e05f607.jpg

Как удалить строку из Structure таблицы с каскадным удалением строк из Customer таблицы (Customer таблица имеет ассоциацию «Ноль или один - много» с собой и каскадное удаление дочерних элементов Customers)?

1 Ответ

1 голос
/ 14 июля 2010

Каскадное удаление - это то, от чего я всегда держусь подальше. Это крутая концепция для изучения, но я еще не видел серьезной реализации Cascading Deletes.

Прочитав мою напыщенную речь, продолжайте читать ..

Когда вы выполняете оператор удаления, SQL Server сначала идентифицирует все строки, которые должны быть удалены. Он строит структуру всех таблиц, которые должны быть включены, и всех строк, которые будут удалены.

Любая таблица не может появляться в этом списке более одного раза, и должен быть один путь к дочернему дереву из родительского дерева.

Я думаю, что вы столкнулись с этой проблемой, потому что у вас есть самостоятельное соединение на столе клиентов.

Вам нужно будет вручную удалить дочерние строки, а затем удалить родительский.

FWIW, я бы не отказывался от отношения с внешним ключом и пытался настроить триггеры (как предлагает статья в КБ ниже).

http://support.microsoft.com/kb/321843

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...