Изменение ключа-кандидата в SQL Server 2005 - PullRequest
1 голос
/ 22 октября 2011

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

У меня есть таблица Part, в которой ее part_id используется как частьключи-кандидаты нескольких других таблиц (A, B, C).Мне нужно сбросить Part и использовать вместо него Product.A, B, C необходимо заменить столбец part_id (тип bigint) новым столбцом product_id (тип данных int).Мне нужно использовать столбец part_id таблиц, чтобы определить, что product_id мне нужно использовать для каждой строки.

Вот что я думаю, что мне нужно сделать (мысли?):

  1. создать столбец product_id в каждой из таблиц (A, B, C)
  2. установите product_id каждой строки для каждой таблицы на соответствующее значение
  3. отбросьте все ограничения / fk / pk, которые у меня есть для столбца part_id в A, B, C
  4. полностью исключить part_id из этих таблиц
  5. воссоздать ограничения / fk / pk, которые я удалил ранее, только product_id должен быть частьювместо них
  6. полностью сбросить таблицу Part

Может кто-нибудь увидеть какие-либо потенциальные проблемы, которыми я, возможно, пренебрегаю?

Спасибо!Дополнительная информация: в таблицах A, B и C имеется много данных, поэтому, если есть более производительный способ, я весь слух.

1 Ответ

0 голосов
/ 22 октября 2011

Вы должны иметь возможность создавать новые ограничения для product_id до того, как вы удалите ограничения для part_id, и до того, как вы удалите столбец part_id. И вы должны сделать это таким образом - сначала создайте новые ограничения.

Если что-то пошло не так с изменениями product_id, ваша база данных все еще будет использоваться, если ограничения part_id все еще действуют.

...