合并来自不同服务器中两个数据库的两个表

时间:2019-09-26 20:28:31

标签: sql-server merge synchronization merge-conflict-resolution offlineapps

我正在开发一个移动应用程序,它将能够在脱机模式下工作。

我有一个在线应用程序,该应用程序在服务器上的数据库中使用了一个名为“ 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”作为合并条件,则将得到肮脏的合并。

在这种情况下,我应该如何进行合并?

1 个答案:

答案 0 :(得分:0)

使用复合主键解决了我的问题。