Вопрос

Есть ли способ обойти это в SQL Server 2005?

(Меня это раздражает, и каждый раз, когда я сталкиваюсь с этим, я впадаю в ступор.Но это первый раз, когда мне пришлось иметь дело с И на Stack Overflow.Пожалуйста, сохраните то немногое здравомыслия, которое у меня есть!)

Таблица размеров:
идентификатор INT IDENTITY(1,1)

Таблица фактов:
source_id INT NOT NULL,
target_id INT НЕ NULL

Я создал внешний ключ от «Fact.source_id» до «Dimension.id» и настроил его с каскадным удалением и каскадным обновлением.

Когда я попытался сделать то же самое с «Fact.target_id», я получил сообщение об ошибке «о нет, нет, нет», поскольку существует несколько путей, которым должен следовать каскад.

Никаких других внешних ключей здесь не задействовано, только те два, которые я хочу создать.Я могу создать второй внешний ключ без каскада, но мне это кажется ерундой.Это набор таблиц, которые будут обслуживаться вручную (их очень редко трогают, поэтому клиент не будет платить за графический интерфейс для этого). Такое каскадное удаление/обновление было бы чрезвычайно полезно, но только если это' в обоих полях.(Я любитель последовательности)

****хныканье****

Это было полезно?

Решение

Да, используйте триггер INSTEAD OF.Он перехватит команду DELETE, и вы сможете соответствующим образом направить логику.

Другие советы

Вы можете каскадно удалить только одну связь.Предлагаю вам сначала настроить это в триггерах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top