仅在id不存在时插入

Two*_*omz 4 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
Run Code Online (Sandbox Code Playgroud)

而我希望它看起来像是

actualid |  id| name
       1 | 101|  Bob
Run Code Online (Sandbox Code Playgroud)

插入或替换会给我一个actualid 2示例和我发现使用where子句设置的任何示例

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

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

CL.*_*CL. 10

使用INSERT或IGNORE:

INSERT OR IGNORE INTO tblTest (id, name) VALUES (101, 'Bob')
Run Code Online (Sandbox Code Playgroud)

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

  • `CREATE UNIQUE INDEX indexname ON tblTest(id);`(如果你在`id`上有一个非唯一索引,请删除它) (2认同)

Mik*_*scu 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')
Run Code Online (Sandbox Code Playgroud)