比方说,我有一个2列的表(OrderId和OrderDate)。在最初的设计中,OrderId是代理项(对于最终用户来说仍然有些意义,因为他们仍然喜欢使用标识整数引用OrderNumber 12345) PK。由于我们开始采用SyncFx并支持脱机客户端创建场景,我们决定添加一个新的列唯一标识符(GUID)作为新的PK。
在我以前的工作 V1.0实现中,OrderId将被赋值为负值(-1,-2等),用于脱机创建的记录。当同步发生时,OrderId将被重新分配为“next”号(服务器将对表中的OrderId列执行max() +1)。该逻辑作为存储过程实现,并将在插入触发器期间调用它。
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”号);但是,更新更改没有下载到客户端。我在想
发布于 2013-08-07 22:35:03
您的更改不会被下载,因为它是在sync的触发器中执行的,因此同步元数据不会更新以显示发生了更改。
我建议尝试在自己的insert触发器中实现代码,而不是在Sync创建的触发器中执行工作。
另外,您将不希望使用INSTEAD OF触发器,因为这将取代其更改跟踪所需的工作同步框架( work )。
通过这样创建您自己的触发器,您的触发器将插入更改,并且在该表的下一次同步时,该更改将被选中。
https://stackoverflow.com/questions/3612361
复制相似问题