1

データとインデックスが関連付けられている既存の sqlite 2 データベース テーブルに追加の列を追加するにはどうすればよいですか。

そのためのalter table SQLはsqlite2では利用できないようですか?

4

4 に答える 4

5

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;
于 2009-07-08T13:49:12.033 に答える
1

DROP TABLE は関連する TRIGGER もドロップすることを忘れないでください。

テーブルを変更する前に、コマンドを使用します

.scheme TABLE_TO_MODIFY

これにより、再作成する必要がある TRIGGER を含め、削除される現在のすべてのステートメントがダンプされます。

乾杯、

エリクソン

于 2011-10-22T16:56:34.127 に答える
1

そうではないかもしれません -- sqlite3 はしばらくの間出てきました。必要な方法でテーブルを使用して別の DB を作成し、データをコピーする必要があります。または、新しいテーブルを作成してデータをコピーし、元のテーブルを削除して新しいテーブルに置き換えます。

于 2009-07-08T13:47:57.543 に答える