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)中是否存在一些可以帮助我的程序,只更新修改过的记录? 感谢
答案 0 :(得分:1)
你可以简单地替换所有行;结果是一样的。
如果您不想重写尚未实际更改的行,则必须比较所有列值。如果在旧的行和接收的行中都有单独的表,则可以将整个行与resize the image before uploading进行比较:
INSERT OR REPLACE INTO MyData
SELECT * FROM ReceivedData
EXCEPT
SELECT * FROM MyData;