Я в процессе миграции данных. У меня есть две таблицы, связанные с внешним ключом, как показано ниже
master_table
------------
OldId char -- Old Primary key
Id int -- New Primary Key
....
detail_table
------------
Id int
old_master_table_id char -- old FK from master_table
master_table_id int -- new FK from master_table
....
Мне нужно заполнить detail_table.master_table_id
Id
из master_table
и удалить old_master_table_id
и OldId
. Я использую следующую команду обновления, а затем удаляю столбец. эта команда отлично работает в первый раз. однако мне нужно ограничить выполнение команд, чтобы они выполнялись только при наличии старых столбцов.
IF NOT Exists(SELECT * FROM sys.columns WHERE
Object_ID = Object_ID('detail_table') AND Name = 'old_master_table_id') BEGIN
UPDATE detail_table SET
master_table_id = (SELECT Id FROM master_table
WHERE
detail_table.old_master_table_id=master_table.OldId);
ALTER TABLE detail_table DROP COLUMN old_master_table_id;
END
Несмотря на то, что у меня "если" и "все работает", команда "Выше" выдает ошибку. Недопустимое имя столбца 'old_master_table_id'.
Как мне избежать вышеуказанной ошибки?