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


159

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

alter table测试添加列mycolumn1文本,添加列mycolumn2文本;

Answers:


311

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

ALTER TABLE语法

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


12
@JoshPinter:谢谢,但是我认为SQLite文档中的语法图值得赞扬,语法图很棒,每个人都应该在文档中使用它们。
亩太短

这个答案真的很有帮助。谢谢。
朱利安·阿尔贝托

0

@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();

我希望这会对某人有所帮助。


0

到目前为止,我唯一可能使用的是

BEGIN TRANSACTION;
ALTER TABLE tblName ADD ColumnNameA TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameB TEXT DEFAULT '';
ALTER TABLE tblName ADD ColumnNameC TEXT DEFAULT '';
COMMIT

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

然后,我运行此查询并在运行时添加了多个列...因此,不在一行中没有,但在一个查询中是可能的。


-16

alter table test添加列mycolumn1文本;alter table test添加列mycolumn2文本;

使用上面重新定义的查询


6
那不是一个单一的语句-任何带有;分隔符的东西都必须作为多个语句执行,并且这确实很重要。另一个答案已经表明,OP所要求的是不可能的。
o11c 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.