有一個奇怪的問題。我在我的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