В настоящее время я пытаюсь локализовать базу данных, и моя стратегия включает в себя удаление всех локализуемых строк из моих различных таблиц и помещение их в другую таблицу, содержащую StringID, CultureID и LocalizedString, которые затем ссылается в исходной таблице на StringID. Проблема в том, что мне нужно изменить тип данных столбца, содержащего строку из varchar, на int и заменить строку ссылкой на таблицу LocalizedStrings.Изменение типа столбца после ввода данных
Я уже взял все свои строки из таблицы и создал записи в таблице LocalizedStrings в этой точке, используя запрос INSERT INTO
. И мои нынешние усилия, чтобы решить мою проблему выглядеть следующим образом:
SELECT column1, column2, ...
INTO TempTable
FROM OriginalTable
INNER JOIN LocalizedStrings
ON OriginalTable.StringColumn = LocalizedStrings.LocalizedString
ALTER TABLE OriginalTable
DROP COLUMN StringColumn
ALTER TABLE OriginalTable
ADD NameStringID int
INSERT INTO OriginalTable (NameStringID)
SELECT StringID FROM TempTable
DROP TABLE TempTable
Однако из-за различные кошмарные зависимости, я получаю все виды исключений пытается это сделать.
Мой вопрос: есть ли более простой способ? Я также рассматривал возможность добавления нового столбца и оставление старого в качестве временного решения, но это довольно грязно.
Мне пришлось разделить верхнюю и нижнюю половину вашего запроса на два запроса (SQL Server Management Studio не понравилось, что я запускал запрос в столбце, который был только что создан в том же запросе), но в противном случае это похоже на путь, спасибо. – Devo