如果在sqlite中不存在列,请在表中添加列

时间:2013-04-22 11:18:52

标签: iphone ios sqlite

我想在表格中添加一个额外的列。 如果在sqlite更新整个sqlite数据库中不存在列,那么有人可以告诉我如何在Table中添加列吗?

if COLUMNPROPERTY( OBJECT_ID('Customers'),'CLable','Text') is null 
    begin 
        alter table Customers add CLable varchar(50) not null 
    end

3 个答案:

答案 0 :(得分:4)

没有足够的声誉将其添加为上述评论,但是......

ALTER TABLE Name ADD COLUMN new_column INTEGER DEFAULT 0

将在prepare()步骤中生成错误(不是SQLITE_OK) - 所以只需忽略它并且不执行步骤():

sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(database, [self.sql UTF8String], -1, &stmt, nil) == SQLITE_OK) {
    sqlite3_step(stmt);
}
sqlite3_finalize(stmt);

答案 1 :(得分:2)

在SQLite中,您无法使用IF NOT EXISTS ...

检查列的存在

您只需检查SELECT col from TABLE如果它返回错误,则列不存在。

或者你可以在app delegate中使用一个标志,如

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"isColumnAdded"]) {

    //call the query like ALTER TABLE tableName ADD COLUMN columnName TEXT;
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isColumnAdded"];
    [[NSUserDefaults standardUserDefaults] synchronize]
}

答案 2 :(得分:-3)

尝试这样,通过使用ALTER命令可以实现这一点,

ALTER TABLE Name ADD COLUMN new_column INTEGER DEFAULT 0