有一个奇怪的问题。我在我的Objective-C的应用程序一个SQLite表:REPLACE INTO sqlite不会取代
NSString *sql = @"CREATE TABLE IF NOT EXISTS user_results (id INTEGER PRIMARY KEY ASC AUTOINCREMENT, gameID INTEGER UNIQUE, gameDesc TEXT, result INTEGER)";
然后我执行查询:
[[DatabaseController getInstance].resultsDB executeUpdate:@"REPLACE INTO user_results (gameID, gameDesc, result) VALUES (?, ?, ?)",[NSNumber numberWithInt:self.gameID],[test JSONRepresentation],[NSNumber numberWithInt:sumBalls]];
但问题是,它不具有相同gameID
替换该行,它只是增加一个(即使它是UNIQUE
),任何想法为什么会发生?
P.S.我正在使用FMDB来处理sqlite。
在此先感谢。
解决方案:发送到sql查询时必须使用[NSNumber numberWithInt:self.gameID].integerValue
而不是。
不可以,gameID已经是UNIQUE列了,所以REPLACE INTO应该可以正常工作并删除任何可能使其不唯一的行。 – 2011-12-14 02:42:00
的确如此。 UNIQUE列不应该被覆盖,所以应该调用REPLACE而不是INSERT。 – 2011-12-14 02:59:23