データとインデックスが関連付けられている既存の sqlite 2 データベース テーブルに追加の列を追加するにはどうすればよいですか。
そのためのalter table SQLはsqlite2では利用できないようですか?
データとインデックスが関連付けられている既存の sqlite 2 データベース テーブルに追加の列を追加するにはどうすればよいですか。
そのためのalter table SQLはsqlite2では利用できないようですか?
SqLite FAQから:
SQLite では、テーブルの末尾に列を追加したり、テーブルの名前を変更したりするために使用できる ALTER TABLE のサポートが制限されています。テーブルの構造にさらに複雑な変更を加えたい場合は、テーブルを再作成する必要があります。既存のデータを一時テーブルに保存し、古いテーブルを削除して新しいテーブルを作成し、一時テーブルからデータをコピーして戻すことができます。
たとえば、列名が「a」、「b」、「c」の「t1」という名前のテーブルがあり、このテーブルから列「c」を削除するとします。次の手順は、これを行う方法を示しています。
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
DROP TABLE は関連する TRIGGER もドロップすることを忘れないでください。
テーブルを変更する前に、コマンドを使用します
.scheme TABLE_TO_MODIFY
これにより、再作成する必要がある TRIGGER を含め、削除される現在のすべてのステートメントがダンプされます。
乾杯、
エリクソン
そうではないかもしれません -- sqlite3 はしばらくの間出てきました。必要な方法でテーブルを使用して別の DB を作成し、データをコピーする必要があります。または、新しいテーブルを作成してデータをコピーし、元のテーブルを削除して新しいテーブルに置き換えます。