Я пытаюсь реализовать каскадное обновление и искал в Интернете ограничение Fk. Я нашел такие решения, как http://sqlandme.com/2011/08/08/sql-server-how-to-cascade-updates-and-deletes-to-related-tables/
и этот блог довольно хорошо объясняет процесс. Я не уверен, что это работает только для PK, или мы можем настроить каскадное обновление/удаление и для не-pk полей.
У меня есть две таблицы.
табличная регистрация:
- ID пользователя (ПК)
- Имя пользователя
- НазваниеКомп
так далее
tblposting_detail:
- Бидид (упак.)
- UserID (Fk с tblregistration)
- НазваниеКомп
Теперь, когда пользователь редактирует свой профиль и обновляет название компании, то есть обновляет compname
в tblregistration
, я хочу, чтобы compname
также обновлялось в моем tblposting_detail
для того же пользователя, который обновил свой профиль.
Я читал статью, в которой говорилось, что каскадное обновление и удаление иногда дают неожиданные результаты, поэтому не рекомендуется все время и лучше иметь два разных SQL-оператора обновления вместо каскадного обновления.
Может ли кто-нибудь помочь мне понять процесс и лучшие практики для этой конкретной проблемы.
Спасибо.
CompName
в таблицеtblposting_detail
? - person gvee   schedule 03.12.2013CASCADE
можно применять только к внешним ключам - и, видя, что ваш столбецcompname
не является FK, вы не можете этого сделать. Также: почемуcompname
хранится в двух местах и требует обновления дважды? Это плохой дизайн - не нормализовано -compname
нужно сохранить только один раз, так что если вы его обновите - все готово. - person marc_s   schedule 03.12.2013