sql检查以查看行是否存在问题

时间:2014-04-27 21:36:10

标签: sql objective-c sqlite

我正在尝试创建一个sql语句,它检查一个表以确保行dosnt已经存在,我尝试使用以下代码,但似乎无法工作。

+ (void) AddToCOLDatabase : (NSString*) AgeRange : (NSString*) MainArea : (NSString*) SubArea : (NSString*) Framework{

        NSString* updateSQL;
        sqlite3_stmt* updateStmt;

        sqlite3_open([dbObservationPathString UTF8String], &ObservationDB);

        updateSQL = [NSString stringWithFormat: @"IF NOT EXISTS (SELECT * FROM OBSERVATIONS WHERE LEVEL0 = '%@' AND LEVEL1 = '%@' AND LEVEL2 = '%@' AND LEVEL3 = '%@') INSERT INTO OBSERVATIONS(LEVEL1,LEVEL2,LEVEL3, LEVEL0) values (?,?,?,?)",AgeRange, MainArea, SubArea,Goal];


        sqlite3_prepare_v2(ObservationDB, [updateSQL UTF8String], -1, &updateStmt, NULL);
        sqlite3_bind_text(updateStmt, 1, [AgeRange UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 2, [MainArea UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 3, [SubArea UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_text(updateStmt, 4, [Framework UTF8String], -1, SQLITE_TRANSIENT);

        sqlite3_step(updateStmt);
        sqlite3_finalize(updateStmt);
        sqlite3_close(ObservationDB);

   }

上面的代码dosnt工作数据库没有改变,我只是想知道是否有人可以给我一个正确的方向轻推,也就像修改如果是这样,如果一个条目是一个条目,也返回主键OBSERVATIONSID制作,我知道它与OUTPUT有关但不知道比那更多 感谢

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT OR REPLACE

INSERT OR REPLACE INTO OBSERVATIONS(LEVEL1,LEVEL2,LEVEL3, LEVEL0) values (?,?,?,?)

为了使其按预期工作,您需要一个不应重复的字段的唯一索引。