sqlite alter table add MULTIPLE columns in a single statement

前端 未结 4 570
南旧
南旧 2020-11-27 13:13

Is it possible to alter table add MULTIPLE columns in a single statement in sqlite? The following would not work.

alter table test add column mycolumn1 text, add          


        
相关标签:
4条回答
  • 2020-11-27 13:31

    No, you have to add them one at a time. See the syntax diagram at the top of SQLite's ALTER TABLE documentation:

    ALTER TABLE syntax

    There's no loop in the ADD branch so no repetition is allowed.

    0 讨论(0)
  • 2020-11-27 13:43

    alter table test add column mycolumn1 text; alter table test add column mycolumn2 text;

    use the above redifined query

    0 讨论(0)
  • 2020-11-27 13:51

    The answer from @mu is too short' is right. As an extra, adding an optimized workaround for adding multiple columns using the benefit of transactions in 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();
    

    I hope this will help someone.

    0 讨论(0)
  • 2020-11-27 13:53

    The only thing so far possible that I use is

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

    Note that there are ; on purpose to make the query be read as multiple lines.

    Then I run this query and get multiple columns added in on run... So no not in one line, but yes in one query its possible.

    0 讨论(0)
提交回复
热议问题