2012-05-15 6 views
1

У меня проблема с множественной ошибкой пути каскада. Вот мои таблицы:Несколько каскадных путей

Таблица (компании)
CompanyCode (PK)
....

Таблица (Aircraft)
AircraftRegistration (PK)
OwnerCode (FK для CompanyCode)
OperatorCode (FK to CompanyCode)
....

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

Правильный способ обойти эту проблему для использования триггеров?

+0

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

ответ

2

Вы можете добавить ON UPDATE CASCADE в свои определения внешнего ключа, после чего значения будут автоматически обновляться, если изменен ссылочный ключ (например, Companies.CompanyCode).

EDIT: Но, как вы отметили в комментариях, это не будет работать для таблиц с двумя внешними ключами, ссылающимися на один и тот же столбец, поэтому для этих случаев вам придется использовать триггер или делать все ваши обновления в «контролируемый» способ, например, посредством хранимой процедуры, которая обновляет ссылочные столбцы. Какой подход лучше зависит от дизайна вашего приложения и от того, как используется ваша база данных.

+0

Вот что я пробовал, но он дает мне ошибку «... может вызвать циклы или несколько каскадных путей». Это связано с тем, что у меня есть две FK в одной таблице «OwnerCode» и «Operator Code». – Kiwi

+0

Моя ошибка, я не сразу понял, я обновил свой ответ. – Pondlife

Смежные вопросы