仅在记录不存在时插入值

时间:2013-04-06 16:57:46

标签: sql sqlite

我正在使用sqlite3数据库。我在一个名为device的表中插入了一组device_ids(唯一的),这是在表为空时完成的。但是当我尝试再次插入包含一些新id的id时,由于唯一性而抛出错误。

 device_all_id.each do |device_id|

     insert into device (Device_id) values ('#{device_id.first}') where  where Device_id <> '#{device_id.first}'

 end

所以我想在插入device_ids之前检查记录是否已经存在,所以我尝试了'IF EXISTS'查询,但这也是因为语法错误而抛出。

任何人都可以帮我解决这个问题..

1 个答案:

答案 0 :(得分:1)

插入前检查将要求数据库回答两个查询,并且它不会真正减少您的错误处理。 (你来捕获错误。更新可能会有很多方法出错。)你几乎总是更好

  • 执行INSERT语句,
  • 陷阱错误,
  • 采取适当措施解决错误。

从您的问题中不清楚UPSERT是否适合您。请参阅this SO answer