sqlite 2データベーステーブルに列を追加するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/1098172

  •  11-09-2019
  •  | 
  •  

質問

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

そのためのテーブルSQLの変更はsqlite2では利用できないようですか?

役に立ちましたか?

解決

SQLiteのよくある質問でます:

SQLiteはあなたがテーブルの末尾に列を追加したり、テーブルの名前を変更するために使用できるALTER TABLEのサポートが制限されています。あなたは、テーブルの構造がより複雑な変更を加えたい場合は、テーブルを再作成する必要があります。その後、一時テーブルからバックでデータをコピーし、新しいテーブルを作成し、古いテーブルを削除し、一時テーブルに既存のデータを保存することができます。

たとえば、列名「A」、「B」、および「C」とし、この表から列「c」を削除したいことを「T1」という名前のテーブルがあるとします。次の手順は、これが行うことができる方法を示します:

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;

他のヒント

それはないかもしれない - sqlite3のはしばらく出てきました。あなたは、テーブルにあなたがそれを望むように他のDBを作成し、そこにデータをコピーする必要があります。それとも、新しいテーブルを作成し、データをコピーし、オリジナルを削除し、新しいものと交換します。

DROP TABLEはまた、関連のトリガーをドロップすることを忘れないでください。

このコマンドを使用してテーブルを変更しようとしている前に、

.scheme TABLE_TO_MODIFY

それはあなたが再作成する必要があるのトリガーを含むドロップされます現在のすべての文をダンプします。

乾杯、

Elixon

あなたはしない。テーブルの重要な変更はサポートされていません。行う必要があるのは次のとおりです。

  1. データを一時テーブルにコピーし、古いテーブルを削除します
  2. 新しいテーブルを作成する
  3. 元のテーブルから元のテーブルにデータをコピーします
  4. 新しいテーブルを作成する
  5. temp から新しいテーブルにデータをコピーします
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top