0

Я пытаюсь обновить значение (небольшую орфографическую ошибку) в базе данных SQL Server 2014.Обновление даже при использовании ограничений

я так:

update t_Table set funID = 'References' where funID = 'Referencies' 

При этом я получаю ошибку

The UPDATE statement conflicted with the FOREIGN KEY constraint "FK_t_Table_Language_t_Table". The conflict occurred in database "db", table "dbo.t_Table". 

Если обновление внешнего ключа, я получаю подобную ошибку.

Есть ли способ обновить все значения одновременно? У меня смутное воспоминание о том, кто-то показывает способ сделать это в студии управления, но я не помню, как это сделать.

ответ

1

Включить обновление каскада на внешнего ключа

ALTER TABLE t_Table_Language DROP CONSTRAINT FK_t_Table_Language_t_Table 
ALTER TABLE t_Table_Language ADD CONSTRAINT FK_t_Table_Language_t_Table 
FOREIGN KEY (funID) REFERENCES t_Table(funID) 
ON UPDATE CASCADE 

EDIT: Или наоборот, я не уверен, какая таблица имеет ЗАРУБЕЖНЫЕ ключ

ALTER TABLE t_Table DROP CONSTRAINT FK_t_Table_Language_t_Table 
ALTER TABLE t_Table ADD CONSTRAINT FK_t_Table_Language_t_Table 
FOREIGN KEY (funID) REFERENCES t_Table_Language(funID) 
ON UPDATE CASCADE 

Затем сделать обновление на ссылочная таблица (главная таблица).

UPDATE t_Table_Language 
SET funID = 'References' 
WHERE funID = 'Referencies' 
+0

Благодарим за ответ. Нет способа сделать это без изменения таблицы? –

+0

Насколько я знаю, чтобы включить каскад обновления, вам нужно сбросить внешний ключ и заново создать его. –

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