2012-03-05 157 views
10

我必須在sqlite中編寫一個查詢來更新記錄(如果存在的話)或者如果記錄不存在則插入它。我從here看了INSERT OR REPLACE INTO的語法。但在我的情況下,當我多次執行查詢時,記錄被複制。即如果我執行查詢5次記錄插入5次。SQLite「INSERT OR REPLACE INTO」無法正常工作

INSERT OR REPLACE INTO NICKS 
    (id_nick,name_nick,date_creation) 
VALUES 
    ('nabeelarif', 'Muhammad Nabeel','2012-03-04') 

你有什麼想法我做錯了什麼。我正在使用android平臺並使用'Firefox Sqlite Manager'來測試我的查詢。

回答

25

您需要在這些列中的一個或其組合上具有唯一索引。

CREATE UNIQUE INDEX idx_something ON NICKS (id_nick, name_nick, date_creation);

+0

謝謝。我在'id_nick'上創建了唯一索引,並且它工作正常。 – 2012-03-05 20:48:56

+0

我也創建了一個,但似乎沒有工作,你能提供更多的見解嗎? – Skynet 2013-12-09 06:26:21

3

你有你的表定義主鍵或唯一索引?我相信構成主鍵或唯一索引的屬性用於確定一行是否已經存在。

-2

我通常使用此代碼爲:

Cursor cur = mDatabase.rawQuery("select * from NICKS where id_nick='"+id_nick+"'); 
cur.moveToFirst(); 
if(cur.getCount()>0){ 
    update... 
}else{ 
    insert... 
}