比较时,你也可以采取行动。
这里建议的“最后更新”列是最常见的方法:最新记录(通过时间戳标识)胜过旧记录。
但有时,同一记录可以同时在源和目标上更改。你是做什么的?
1-您可以检查每条记录的列并仅更改另一条中未修改的已修改值
ex: (changes are marked *)
Mobile side:
Last: Doe
First: Jogn
*Age: 58
Timestamp: 2020-10-10 20:00:00
Server side:
Last: Doe
*First: John
Age: 56
Timestamp: 2020-10-10 20:00:00
That would merge data and change only John and the age to 58
Last: Doe
First: John
Age: 58
Timestamp: 2020-10-10 20:00:00
2- 现在,如果您同时更改同一列会怎样(相信我,它会发生,例如在数据采集系统中)
ex: (changes are marked *)
Mobile side:
Last: Doe
*First: John
Age: 58
Timestamp: 2020-10-10 20:00:00
Server side:
Last: Doe
*First: Henry
Age: 58
Timestamp: 2020-10-10 20:00:00
此信息有冲突。
如果您的应用是交互式的,您可以为用户提供一种方法来实际选择 John 或 Henry 哪个值获胜并成为参考。
但是现在如果你有数百次碰撞,你的用户就会放弃。
您可以提供“左”总是赢,或“右”总是赢。至少由用户决定并负责数据完整性。
如果您的应用程序自动处理数据,那么您必须实施一种机制来让一方胜过另一方。
这可能是一场噩梦。
Interbase 数据库具有非常好的更改视图。
其他数据库也有机制。但它们都是有代价的,它们不像 SQLite 那样免费。
请记住,大多数处理更改的模型或开发工具通常假定具有最新时间戳的记录胜过较旧的记录。可能满足 95% 的需求。