我目前正在尝试本地化数据库,我的策略包括从我的各种表中取出所有可本地化的字符串,并将它们放入另一个包含 StringID、CultureID 和 LocalizedString 的表中,然后在原始表中引用字符串 ID。问题是我需要将包含字符串的列的数据类型从 varchar 更改为 int 并将字符串替换为对 LocalizedStrings 表的引用。
我已经从表中取出了所有字符串,并在此时使用INSERT INTO
查询在 LocalizedStrings 表中创建了条目。我目前为解决我的问题所做的努力是这样的:
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
但是,由于各种噩梦般的依赖关系,我遇到了各种尝试这样做的异常。
我的问题是,有没有更简单的方法?我还考虑过只添加新列并将旧列作为临时解决方法,但这很麻烦。