仅在id不存在时插入

时间:2013-03-20 21:44:27

标签: sqlite

好吧,我们有一个带有

表设置的phonegap应用程序

tblTest (actualid INTEGER PRIMARY KEY, id INTEGER, name TEXT)

actualid是设备的唯一ID,id保存在服务器端数据库中。我们遇到了webservices返回重复记录的问题,而我们正在修复我想在sql中添加一些可以防止添加重复项的内容(修复坏数据很麻烦)。

我们当前的插入语句设置为

INSERT INTO tblTest (id, name) VALUES (101, 'Bob')

如果你运行两次,数据库将最终看起来像

actualid |  id| name
       1 | 101|  Bob
       2 | 101|  Bob

我希望它看起来像是

actualid |  id| name
       1 | 101|  Bob

插入或替换会在示例中给我一个actualid 2,我使用where子句找到的任何示例都设置为

INSERT INTO tblTest SELECT ..... WHERE.....

哪个不起作用,因为没有数据在表中(除非我犯了一个新手错误,我不是很擅长sqlite或一般sql)。

2 个答案:

答案 0 :(得分:10)

使用INSERT OR IGNORE

INSERT OR IGNORE INTO tblTest (id, name) VALUES (101, 'Bob')

(这需要您已拥有id列的唯一索引。)

答案 1 :(得分:5)

您可能想尝试一下:

 INSERT INTO tblTest 
      (id, name)
      SELECT 101 as id, 'Bob' as name
        FROM tblTest
       WHERE NOT EXISTS(SELECT * FROM tblTest WHERE id = 101 and name = 'Bob')