SQLite-UPSERT*NOT*插入或替換http://en.wikipedia.org/wiki/Upsert在SQLServer上插入更新存儲的proc在SQLite中是否有一些我沒有想到的聰明的方法來做到這一點?基本上,如果記錄存在,我想更新四列中的三列,如果不存在,我希望為第四列插入帶有默認值(Nul)值的記錄。ID是主鍵,因此UPSERT只有一條記錄。(我試圖避免SELECT的開銷,以確定是否需要明顯地更新或插入)建議?我無法確認SQLite站點上用于表創(chuàng)建的語法。我沒有建立一個演示來測試它,但它似乎不被支持。如果是的話,我有三列,所以它實際上看起來是: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(按需要)。當綁定數(shù)據(jù)是一個完整的事務時,SQLite中的更新,這意味著要更新的每一行都需要:準備/綁定/步驟/Finish語句,而INSERT允許使用重置函數(shù)語句對象的生命周期如下所示:使用sqlite3_PREIT_v2()創(chuàng)建對象使用sqlite3_BIND_接口將值綁定到主機參數(shù)。通過調(diào)用sqlite3_STEP()來運行SQL使用sqlite3_Reset()重置語句,然后返回到步驟2并重復。使用sqlite3_final()銷毀語句對象。我猜插入的更新速度比較慢,但是如何比較使用主鍵進行選擇呢?也許我應該使用SELECT讀取第4列(BLOB 3),然后使用REPLE來編寫一個新記錄,將原來的第4列與前3列的新數(shù)據(jù)混合起來?
SQLite-UPSERT*NOT*插入或替換
收到一只叮咚
2019-06-13 16:52:41