Sqlite alter table 在单个语句中添加 MULTIPLE 列

是否可以在 sqlite 的单个语句中更改表添加 MULTIPLE 列? 下面的方法不起作用。

alter table test add column mycolumn1 text, add column mycolumn2 text;
81930 次浏览

不,您必须一次添加一个。请参阅 SQLite 的 ALTER TABLE 文档顶部的语法图:

ALTER TABLE syntax

ADD分支中没有循环,因此不允许重复。

修改表格测试添加列 mycolumn1文本; 修改表格测试添加列 mycolumn2文本;

使用上面重定义的查询

来自“ @ 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

注意: 有; 目的是使查询被读取为多行。

然后我运行这个查询并在运行时获得多个列... ... 所以不是在一行中,而是在一个查询中,这是可能的。