Sqlite:仅在更改行时替换或更新行

时间:2018-02-14 15:53:49

标签: ios sqlite insert-update

Objective-C iOS应用程序将sqlite与一组行集成,每行由一个ID标识。例如:

| id | user_name |  age   |
------------------------------
|  1 |   johnny  |  33    |
|  2 |    mark   |  30    |
|  3 |  maroccia |  50    |

异步地,应用程序接收相同的记录集,但其中一些记录被修改:它必须更新(或替换)仅修改的记录,忽略其他记录(未修改的记录)。

例如,应用会收到此类更新的行:

| id | user_name |  age   |
------------------------------
|  1 |   johnny  |  33    |
|  2 |    mark   |  30    |
|  3 |  ballarin |  50    |  <------ CHANGED RECORD

在这种情况下,只更改了第三条记录,应用程序应更新或替换它,忽略前两条记录。 显然,INSERT OR REPLACE不适合我,因为它会写出所有记录。那么,在sqlite(或Objective-C)中是否存在一些可以帮助我的程序,只更新修改过的记录? 感谢

1 个答案:

答案 0 :(得分:1)

你可以简单地替换所有行;结果是一样的。

如果您不想重写尚未实际更改的行,则必须比较所有列值。如果在旧的行和接收的行中都有单独的表,则可以将整个行与resize the image before uploading进行比较:

INSERT OR REPLACE INTO MyData
SELECT * FROM ReceivedData
EXCEPT
SELECT * FROM MyData;