Как изменить значение первичного ключа и обновить внешний ключ одновременно - PullRequest
7 голосов
/ 17 июня 2011

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

Есть ли простой способ обновить первичный ключ и внешний ключ в одно и то же время?

Ответы [ 3 ]

8 голосов
/ 17 июня 2011

Если внешние ключи настроены на каскадные изменения, то значение должно измениться автоматически.

3 голосов
/ 17 июня 2011

Убедитесь, что для ваших отношений с внешним ключом задано значение ON UPDATE CASCADE, и внешний ключ автоматически обновится, чтобы соответствовать первичному ключу.

Из Книг Онлайн: http://msdn.microsoft.com/en-us/library/ms174123%28v=SQL.90%29.aspx

ОБНОВЛЕНИЕ {CASCADE | НЕТ ДЕЙСТВИЙ | ЗАДАВАТЬ ПО УМОЛЧАНИЮ | SET NULL}

Указывает, какое действие происходит со строкой в ​​таблице, которая создается при в этой строке есть ссылка отношения и ссылочная строка обновляется в родительской таблице. по умолчанию НЕТ ДЕЙСТВИЯ. Увидеть Раздел «Замечания» далее в этой теме для получения дополнительной информации.

0 голосов
/ 17 апреля 2016

Обновление первичного ключа не обновляет связанные внешние ключи, оно только удаляет связанные записи в других таблицах, поскольку Sql Server рассматривает обновление как удаление и вставку.Это SQL Server 2000, не уверен, более поздние версии.Используя «каскадное обновление при каскадном удалении», каскадные эффекты «delete and insert: aka update» удаляют связанные записи в других таблицах.

...