当 DataSnap 客户端应用程序连接到 DataSnap 服务器的远程数据模块并使用TDataSetProvider
+TClientDataSet
时,它会缓存客户端应用程序本地的数据库表(或视图)。用户可以在本地对 TClientDataSet 中的数据进行更改,ApplyUpdates(0)
并将更改与服务器同步。这一切都说得通。
使用 SQL Server 2008 db,主键可以是identity
一个字段或GUID
字段。假设用户在向本地添加新记录时会离线,那么当用户创建新TClientDataSet
记录时,本地TDataSetProvider
和处理主键字段的分配如何?由于本地创建的记录可能是主/从关系的一部分,因此需要在本地创建新的主键似乎是合乎逻辑的。当用户执行“ApplyUpdates(0)”时,如何解决?TClientDataSet
当几个用户在离线模式下创建记录时,当他们每个人都做一个时如何解决主键冲突ApplyUpdates(0)
?
领域比identity
领域更好GUID
,反之亦然?为什么?