[MSSQL] Multiple cascade paths

bleyman

Есть две таблички.
Во второй есть два форейн кея на id в первой. На оба стоит каскадное удаление/апдейт.
alter table TeacherAccessOverride
add constraint FK_TEACHERA_REF24_TEACHERS foreign key (PermissionTeacherId)
references Teachers (Id)
on update cascade on delete cascade
go
alter table TeacherAccessOverride
add constraint FK_TEACHERA_REF25_TEACHERS foreign key (TargetTeacherId)
references Teachers (Id)
on update cascade on delete cascade
go

МсСкул ругается, что получается несколько путей каскадного апдейта/удаления. Я понимаю о чём это он, действительно, два пути - по первой и по второй ссылке. Но _почему_ это ему не нравится? Неужели тяжело перед удалением каждой записеи вторым констрейнтом, проверить, а не удалена ли она уже первым (это если они тупо применяют констрейнты по очереди, иначе вообще непонятно, в чём проблема)?
И что, мне теперь придётся выность логику второго констрейнта из декларативной части и забивать её в код?

bleyman

Мадкроз дал мне ссылку
http://support.microsoft.com/kb/321843
Почему они такие мудаки? А что, остальные ДБ производители такие же мудаки?

bobby

А что, остальные ДБ производители такие же мудаки?
Неа
Пиши уже триггер.

bleyman

Неа
Пиши уже триггер.
Не буду =)
Чтобы эксплойтнуть этот глюк надо приложить достаточные усилия, ни к чему фатальному он не приведёт (надеюсь поправить данные чтобы глюк исчез будет очень просто (причём прямо из клиента а вот денег за его исправление мне никто не даст =)
Оставить комментарий
Имя или ник:
Комментарий: