Sql server 2005 Microsoft Sync Framework 2.0:是否可以在同一同步事务(客户端上载服务器更新)场景中更新列值?
比如说,我有一个表,有两列OrderId和OrderDate。在最初的设计中,OrderId是代理项,这对最终用户来说仍然有一定的意义,因为他们仍然喜欢使用IDENTITY integer引用OrderNumber 12345 PK。因为我们开始采用SyncFx并支持离线客户端创建场景,所以我们决定添加一个新的列唯一标识符GUID作为新的PK 在我以前的工作V1.0实现中,OrderId将被分配为负值-1、-2,以此类推,用于脱机创建的记录。同步发生时,OrderId将被重新分配“下一个”编号。服务器将对表中的OrderId列执行max+1。该逻辑作为存储过程实现,并将在insert触发器期间调用Sql server 2005 Microsoft Sync Framework 2.0:是否可以在同一同步事务(客户端上载服务器更新)场景中更新列值?,sql-server-2005,triggers,microsoft-sync-framework,Sql Server 2005,Triggers,Microsoft Sync Framework,比如说,我有一个表,有两列OrderId和OrderDate。在最初的设计中,OrderId是代理项,这对最终用户来说仍然有一定的意义,因为他们仍然喜欢使用IDENTITY integer引用OrderNumber 12345 PK。因为我们开始采用SyncFx并支持离线客户端创建场景,所以我们决定添加一个新的列唯一标识符GUID作为新的PK 在我以前的工作V1.0实现中,OrderId将被分配为负值-1、-2,以此类推,用于脱机创建的记录。同步发生时,OrderId将被重新分配“下一个”编号。
Update INSERTED set OrderId = b.NextNumber
FROM INSERTED a,
(
SELECT SyncGUID, ROW_NUMBER() OVER (ORDER BY SyncGUID) + (SELECT MAX(OrderId) MaxID FROM Order) as NextNumber
--select *
FROm Order
where OrderId <= 0
) b
where a.SyncGUID = b.SyncGUID
但是,在V2.0中,在syc之后,在服务器端创建记录,并且OrderId从-1更新为“next”编号;但是,该更新更改没有下载到客户端。我在想
我正在研究_selectchanges存储过程中的逻辑。我好像
我可能需要手动操作
[本地\u更新\u对等\u时间戳]以便枚举拾取
怎么了?!
由于整个逻辑在insert触发器中运行
记录仍然没有提交到实际表中,我也是
想知道是否有可能再次调用枚举
将记录提交到服务器表之后。不打电话
另一个同步
在这种情况下,INSERT而非INSERT触发器会提供帮助吗?!
我试了几次,但用我有限的知识做不到。
您的更改未被下载,因为它是在同步的触发器内完成的,因此同步元数据未得到更新以显示发生了更改 我建议您尝试在自己的insert触发器中实现代码,而不是在Sync创建的触发器中完成工作 此外,您也不希望使用INSTEAD OF触发器,因为这将取代同步框架为其更改跟踪所需的工作 通过以这种方式创建您自己的触发器,您的触发器将插入更改,并且在下一次同步该表时,该更改将被拾取