我正在开发一个移动应用程序,它将能够在脱机模式下工作。
我有一个在线应用程序,该应用程序在服务器上的数据库中使用了一个名为“ Books”的表,而我的移动应用程序具有一个带完全“ Tables”表的sqlite数据库。
当应用程序可以访问Internet时,它会将数据从sqlite中的“ Books”表同步到SQL Server中的“ Books”表。
我正在使用MERGE (Transact-SQL)语句来执行它。但是我有一个问题。
假设我的移动应用没有连接互联网已有7天了,表格如下:
Books(SQL Server)
+----+---------------------------------+--------------+
| Id | Name | LastModified |
+----+---------------------------------+--------------+
| 1 | Modern Operating Systems | 2019-09-20 |
+----+---------------------------------+--------------+
| 2 | The Art of Computer Programming | 2019-09-20 |
+----+---------------------------------+--------------+
Books(sqlite in mobile App)
+----+---------------------------------+--------------+
| Id | Name | LastModified |
+----+---------------------------------+--------------+
| 1 | Modern Operating Systems | 2019-09-20 |
+----+---------------------------------+--------------+
| 2 | The Art of Computer Programming | 2019-09-20 |
+----+---------------------------------+--------------+
| 9 | Computer Networks | 2019-09-26 |
+----+---------------------------------+--------------+
考虑sqlite和SQL Server中的两个表都包含“自动增量主键”,如果使用“ Id”作为合并条件,则将得到肮脏的合并。
在这种情况下,我应该如何进行合并?
答案 0 :(得分:0)
使用复合主键解决了我的问题。