Я работаю с устаревшей базой данных SQL Server, в которой есть основная таблица с неверным первичным ключом.
Ключ имеет тип NVARCHAR(50)
и содержит сгенерированную приложением строку, основанную на различных вещах встол.По понятным причинам я хотел бы заменить этот ключ на автоинкрементный (идентификатор) столбец INT
.
Это огромная база данных, и мы обновляем ее по частям.Мы хотим минимизировать изменения в таблицах, в которые пишут другие компоненты.Я подумал, что могу изменить таблицу, ничего не нарушая, просто:
- Добавление нового столбца Id в таблицу и сделать его обнуляемым
- Заполнение уникальными целыми числами и создание
NOT NULL
- Удаление существующего первичного ключа при сохранении ограничения уникальности для этого столбца
- Установка нового столбца Id в качестве нового первичного ключа и идентификатора
Пункт 3 оказывается очень болезненным.Поскольку это базовая таблица, существует много других таблиц с ограничениями внешнего ключа.Чтобы удалить существующий первичный ключ, мне кажется, что мне нужно удалить все эти ограничения внешнего ключа и впоследствии создать их снова.
Есть ли более простой способ сделать это, или мне просто придется написать все?