![]() |
|
Модераторы: Akina |
![]()
|
|
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Добрый день.
СУБД: MS SQL Server 2008 Express. Есть дочерняя таблица, у которой два поля ссылаются на родительскую таблицу. Связь 0..1 - n. На обеих связях ставлю INSERT and UPDATE specification следующим образом: Delete rule - Set NULL, Update Rule - Cascade. Microsoft SQL Server Management Studio генерирует ошибку: "- Unable to create relationship ... Introducing FOREIGN KEY constraint ... on table ... may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints." Я не могу понять, каким образом могут получиться циклы и чем страшны множественные каскадные пути? И как мне иначе при удалении родительской записи поля в дочерней выставить в NULL? Заранее спасибо |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: нет Всего: 62 |
amarenkov, переношу тему в профильный раздел. Насколько я знаю, в SQL Server эту проблему можно разрулить только при помощи тригеров.
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
amarenkov,
Я из описания не понял ничего... Лучше напиши чего ты хочешь добиться. |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Itsys, легко
Есть таблица шапки организации (наименование, инн, адресс). Есть таблица организаций-плательщиков (много разных полей). Во второй таблице есть так же поля: Организация-правопередатчик и Вышестоящая организация. Эти поля ссылаются на первую таблицу. Так вот, мне необходимо, чтобы при удалении из первой таблицы эти два поля во второй становились NULL. Но в Delete Rule для этих двух связей выставить Set NULL не получается - ошибка (в первом посте ее текст). |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: нет Всего: 62 |
Некоторое время назад сам интересовался этим вопросом на sql.ru: http://www.sql.ru/forum/actualthread.aspx?tid=645122
|
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Idsa, спасибо
|
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: нет Всего: 65 |
amarenkov, Приветствую.
А вот это
Вы там при проектировании своей БД ничего не напутали и не перемудрили? Подумайте еще раз какие данные должны у Вас сохраняться в БД и проведите НОРМАЛИЗАЦИЮ, скорее всего проблемы отпадут. И еще раз обдумайте бизнес-процесс. Если необходимость удалять "шапку", когда есть дочерние записи? Если да, то удалять надо в обоих таблицах, если нет, то помечать запись о "шапке" как не активную. У меня на пример так сделано по клиентуре с их фактурами и по фактурам с товарами в них. Даже если клиента больше нет, то фактуры то остались и соответственно если товара нет, то фактуры то есть. Ну а если уж у вас такая "хитрая" бизнес логика, то триггер самое то. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| amarenkov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
thomas, да нет, ничего не намудрил, и нормализация здесь не нужна. У Idsa почти такой же пример, посмотрите, если мой непонятен.
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |