SQLiteの単一ステートメントでテーブル追加の複数列を変更することは可能ですか?以下は機能しません。
変更テーブルテスト列mycolumn1テキストを追加し、列mycolumn2テキストを追加します。
SQLiteの単一ステートメントでテーブル追加の複数列を変更することは可能ですか?以下は機能しません。
変更テーブルテスト列mycolumn1テキストを追加し、列mycolumn2テキストを追加します。
回答:
いいえ、一度に1つずつ追加する必要があります。SQLiteのALTER TABLEドキュメントの上部にある構文図を参照してください。
ADD
ブランチにはループがないため、繰り返しは許可されません。
@muからの答えは短すぎる」が正しい。追加として、SQLのトランザクションの利点を使用して複数の列を追加するための最適化された回避策を追加します。
String alterTableQuery = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN ";
List<String> newColumns = ..// Your new columns
db.beginTransaction();
for (String column : newColumns){
db.execSQL(alterTableQuery + column + " VARCHAR");
}
db.setTransactionSuccessful();
db.endTransaction();
これが誰かの役に立つことを願っています。
これまで私が使用できる唯一のことは
BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT
あることに注意してください。クエリを複数行として読み取るため。
次に、このクエリを実行して、実行時に複数の列を追加します...したがって、1行ではなく、1つのクエリでは可能です。
alter table test add column mycolumn1 text; alter table test add column mycolumn2 text;
上記の再定義されたクエリを使用する
;
セパレーターを含むものはすべて複数のステートメントとして実行する必要があり、それはしばしば問題になります。ただし、もう1つの回答は、OPが求めていることは不可能であることをすでに示しています。