0

SQLite データベースを使用しています。列の削除/名前変更/並べ替えは SQLite ではサポートされていないため (alter table コマンドを使用)、次のタスク用にカスタマイズされたメソッドを作成しています: (既存のテーブルのバックアップを取得し、要件に一致する新しいテーブルを作成するなど..)これは他のいくつかのスレッドで説明されています。

DB 操作は次のとおりです。 DROP 列 RENAME (列とデータ型) ADD 列 REORDER 列。

これらの操作をどの順序で行うべきか疑問に思っています。私の混乱は主に、列の名前を変更する前にドロップする必要があるかどうかに関係していますか?

また、データ型を含む列の名前を変更し、データを移動する方法についての指針が必要ですか?

何かご意見は?

4

1 に答える 1

0

最初に、次の手順で問題が発生した場合に備えて、データベースのバックアップを作成してください。

操作の順序はCREATE newtableINSERT INTO newtableDROP oldtableです。

各列の正しい列名とデータ型で新しいテーブルを作成します。次に、次のようにします。

INSERT INTO new_table(columns, ...)
(SELECT columns, ...
FROM old_table)

新しいデータ型が古いデータ型と直接互換性がない場合は、異なるデータ型でキャストを実行する必要がある場合があります。

古いテーブルから選択した列が、INSERT INTOステートメントの新しいテーブルの列によって定義された順序と同じであることを確認する必要があります。

新しいテーブルにデータが挿入されたら、すべてのデータが正しく挿入されたことを確認できます。外部キー制約に関する問題を回避するために、他のテーブルの外部キー参照を必ず更新してください。

次に、古いテーブルを削除し、新しいテーブルの名前を古いテーブルの名前に変更できます。

DROP old_table;
ALTER TABLE new_table_name RENAME TO old_table_name;
于 2013-04-10T18:39:55.933 に答える