私は現在、データベースをローカライズしようとしています。私の戦略では、さまざまなテーブルからすべてのローカライズ可能な文字列を取り出し、それらを 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
ただし、さまざまな悪夢のような依存関係があるため、これを実行しようとするとあらゆる種類の例外が発生します。
私の質問は、もっと簡単な方法はありますか? また、一時的な回避策として、新しい列を追加して古い列を残すことも検討しましたが、それはかなり面倒です。