Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с Foreign Key  [new]
Idsa
Member

Откуда:
Сообщений: 89
Если таблица Communities, в которой поля ManagerId и GroupLeaderId должны содержать FK на Persons, и при удалении соответствующего Person эти поля должны устанавливаться в null.
[IMG]http://pic.ipicture.ru/uploads/090307/PC2r3a55M2.jpg[/IMG]
Создал связи, установил DeleteRule в SetNull, сохраняю - получаю ошибку:

Unable to create relationship 'FK_Communities_Persons1'.
Introducing FOREIGN KEY constraint 'FK_Communities_Persons1' on table 'Communities' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.

Подскажите, как это можно реализовать?
7 мар 09, 15:46    [6900061]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Idsa,

увы, только в триггере.
7 мар 09, 17:05    [6900154]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
Idsa
Member

Откуда:
Сообщений: 89
А это общая болезнь реляционных СУБД или особенность Sql Server?
7 мар 09, 17:14    [6900158]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Мои 5 коп http://support.microsoft.com/kb/321843

Насчет "всех СУБД" - не знаю
7 мар 09, 17:34    [6900175]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Idsa
А это общая болезнь реляционных СУБД или особенность Sql Server?
Недавно была похожая тема, в которой автор утверждает, что в остальных СУБД всё замечательно.
Не знаю, насколько этому можно верить, но я тоже считаю, что в MSSQL это отвратительный баг,
на который Microsoft просто не обращает внимания.
7 мар 09, 17:54    [6900184]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
в MSSQL это отвратительный баг, на который Microsoft просто не обращает внимания.
Единственное, что приходит в голову в качестве препятствия для существования нескольких каскадных FK в одной таблице, ссылающихся на одну и ту же другую таблицу, - это возможность различия правил этих ключей. Например, один каскадный FK требует удаления зависимых записей, а другой - установки "зависших" полей в NULL (ON DELETE SET NULL - начиная с SQL2005). Что делать серверу в этой ситуации?
Но ведь можно придумать и способ "разруливания" таких противоречий. Например, считать приоритетным правило, требующее удаления. Или контролировать неодинаковость этих правил у таких каскадных FK в момент их создания (считать их ошибкой).
7 мар 09, 19:53    [6900319]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
Idsa
Member

Откуда:
Сообщений: 89
Спасибо за исчерпывающую информацию. Написал тригер... хотя не дело это. Эх...
7 мар 09, 21:36    [6900436]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Foreign Key  [new]
Honey
Member

Откуда: Минск
Сообщений: 195
У меня похожая ситуация, только надо удалить связные записи. Так вот в Access все работает!
24 ноя 09, 12:03    [7969234]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить