2012-03-05 129 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... 
}