为了账号安全,请及时绑定邮箱和手机立即绑定

SQLite-UPSERT*NOT*插入或替换

SQLite-UPSERT*NOT*插入或替换

收到一只叮咚 2019-06-13 16:52:41
SQLite-UPSERT*NOT*插入或替换http://en.wikipedia.org/wiki/Upsert在SQLServer上插入更新存储的proc在SQLite中是否有一些我没有想到的聪明的方法来做到这一点?基本上,如果记录存在,我想更新四列中的三列,如果不存在,我希望为第四列插入带有默认值(Nul)值的记录。ID是主键,因此UPSERT只有一条记录。(我试图避免SELECT的开销,以确定是否需要明显地更新或插入)建议?我无法确认SQLite站点上用于表创建的语法。我没有建立一个演示来测试它,但它似乎不被支持。如果是的话,我有三列,所以它实际上看起来是:CREATE TABLE table1(      id INTEGER PRIMARY KEY ON CONFLICT REPLACE,      Blob1 BLOB ON CONFLICT REPLACE,      Blob2 BLOB ON CONFLICT REPLACE,      Blob3 BLOB  );但是前两个气泡不会引起冲突,只有ID才能使我成为BLOB 1和BLOB 2(按需要)。当绑定数据是一个完整的事务时,SQLite中的更新,这意味着要更新的每一行都需要:准备/绑定/步骤/Finish语句,而INSERT允许使用重置函数语句对象的生命周期如下所示:使用sqlite3_PREIT_v2()创建对象使用sqlite3_BIND_接口将值绑定到主机参数。通过调用sqlite3_STEP()来运行SQL使用sqlite3_Reset()重置语句,然后返回到步骤2并重复。使用sqlite3_final()销毁语句对象。我猜插入的更新速度比较慢,但是如何比较使用主键进行选择呢?也许我应该使用SELECT读取第4列(BLOB 3),然后使用REPLE来编写一个新记录,将原来的第4列与前3列的新数据混合起来?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 630 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信