Повторная таблица с ключом, уже использованным в качестве внешнего ключа - PullRequest
0 голосов
/ 23 января 2020

Можно ли повторно установить ключ (IDENTITY) таблицы, уже использованной в качестве внешнего ключа в других таблицах? Есть ли безопасный способ «распространять» новые сериалы на другие таблицы? Должен ли я создать новый столбец с новым чистым ключом идентификации, а затем обновить записи в других таблицах в соответствии с новым серийным номером? Я работаю с SQLSERVER 2012

1 Ответ

0 голосов
/ 23 января 2020

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

Это так называемые каскадные ограничения и синтаксис:

alter table add constraint fk_table1_table2_id
    foreign key table2(t1_id) references table1(t1_id)
         on update cascade;

Как правило, существует также on delete. Вы можете обратиться к документации вашей базы данных, чтобы узнать о них.

Затем вы можете "отключить" автоматическое c генерирование столбца идентификации и обновить значения для ключей в table1. Затем они распространяются на все таблицы, в которых внешние ключи каскадно обновляют внешние ключи.

Примечание. Это необходимо сделать для ВСЕХ внешних ключей, если это является вашим намерением.

В общем, такой подход НЕ рекомендуется, поскольку он может привести к значительным изменениям в базе данных. Однако, если вам по какой-то причине необходимо выполнить sh, вы можете.

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

...