-2

我正在使用 sqlite3 数据库。我在名为 device 的表中插入了一组 device_ids(unique),这是在表为空时完成的。但是当我尝试再次插入包含一些新 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'查询,但这也作为语法错误抛出。

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

4

1 回答 1

1

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

  • 执行 INSERT 语句,
  • 捕获错误,以及
  • 采取适当的措施来解决错误。

从您的问题中不清楚 UPSERT 是否适合您。看到这个答案

于 2013-04-06T17:04:52.620 回答