#sql-server-2005 #tsql #foreign-keys #database-schema #alter-table
#sql-server-2005 #tsql #внешние ключи #база данных-схема #alter-таблица
Вопрос:
Передо мной стоит довольно интересная задача, и я хочу убедиться, что я правильно ее обдумываю —
У меня есть таблица Part
, которая part_id
используется как часть ключей-кандидатов нескольких других таблиц ( A
, B
, C
). Мне нужно удалить Part
и использовать Product
вместо этого. A
, B
, C
необходимо part_id
заменить их столбец (который имеет тип bigint
) на новый столбец product_id
(который имеет тип int
данных). Мне нужно использовать part_id
столбец таблиц, чтобы определить, что product_id
мне нужно использовать для каждой строки.
Вот что я думаю, это то, что мне нужно сделать (мысли?):
- создайте
product_id
столбец в каждой из таблиц (A
,B
,C
) - установите
product_id
для каждой строки для каждой таблицы соответствующее значение - удалите все ограничения /fk / pk, которые у меня есть для
part_id
столбца вA
,B
,C
- полностью удалите
part_id
из этих таблиц - воссоздайте ограничения / fk / pk, которые я отбросил ранее, только вместо этого они должны
product_id
быть их частью Part
полностью удалите таблицу
Может ли кто-нибудь увидеть какие-либо потенциальные проблемы, которыми я могу пренебречь?
Спасибо!
Дополнительная информация: в таблицах A, B и C содержится МНОГО данных, поэтому, если есть более эффективный способ, я весь внимание.
Ответ №1:
Вы должны иметь возможность создавать новые ограничения для product_id перед удалением ограничений для part_id и перед удалением столбца part_id. И вы должны сделать это таким образом — сначала создайте новые ограничения.
Если что-то пойдет не так с изменениями product_id, ваша база данных все еще может использоваться, если ограничения part_id все еще действуют.