SQLite-UPSERT *不是* INSERT或REPLACE
http://en.wikipedia.org/wiki/Upsert 在SQL Server上插入更新存储的proc 在我没有想到的SQLite中,有什么聪明的方法可以做到这一点吗? 基本上,如果记录存在,我想更新四列中的三列;如果不存在,我想使用第四列的默认(NUL)值插入记录。 ID是一个主键,因此UPSERT只会有一个记录。 (我试图避免SELECT的开销,以便确定是否需要显式更新或插入) 有什么建议吗? 我无法在SQLite网站上确认TABLE CREATE的语法。 我还没有建立一个演示来测试它,但是似乎不被支持。 如果是的话,我有三列,因此实际上看起来像: CREATE TABLE table1( id INTEGER PRIMARY KEY ON CONFLICT REPLACE, Blob1 BLOB ON CONFLICT REPLACE, Blob2 BLOB ON CONFLICT REPLACE, Blob3 BLOB ); 但前两个Blob不会引起冲突,只有ID会发生冲突,因此我不会替换Blob1和Blob2(根据需要) 当绑定数据是一个完整的事务时,SQLite中的UPDATE意味着要更新的每个发送行都需要:Prepare / Bind / Step / Finalize语句,与INSERT不同,后者允许使用reset函数 语句对象的寿命如下所示: