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列的新数据混合起来?
添加回答
举报
0/150
提交
取消