[SymmetricDS]:来自源的多行仅向目标写入一行
Posted
技术标签:
【中文标题】[SymmetricDS]:来自源的多行仅向目标写入一行【英文标题】:[SymmetricDS]: Multiple row from source write only one row to target 【发布时间】:2018-05-21 07:12:02 【问题描述】:我有一张表,其中有多条记录带有 PK ID,EffectiveDate。发送到目标时,我只需要最新的记录。我在目标中的 PK 只有 ID。我怎样才能做到这一点?
来源
ID 生效日期
P1 2018-01-01
P1 2018-02-01
目标
ID 生效日期
P1 2018-02-01(最新)
【问题讨论】:
【参考方案1】:如果两行 ID 值相同,那么我会将该列声明为目标数据库的主键,并让后续插入语句回退以使用最新值覆盖生效日期列。
【讨论】:
但在源代码中我希望 EffectiveDate 也作为 PK,这样我就可以插入多条记录 不要更改源数据库中的任何内容。仅将 ID 声明为目标数据库的主键。 我在源的 PK 是 (ID, EffectiveDate),在目标的 PK 是 (ID) 如果我插入具有相同 ID 的第二行,它不允许我在目标更新。我已经使用了变换 Update_first = 1 在 dbo.Test 上执行 INSERT 时检测到冲突。主键数据为:ID=P1, EffectiveDate=2018-01-01 00:00:00.000。回退失败。原始错误消息是:违反主键约束“PK_Test”。无法在对象“dbo.Test”中插入重复键。重复键值为 (P1)。 我认为 Update_first 足以解决错误..以前的不工作是因为我混淆了源节点和目标节点......以上是关于[SymmetricDS]:来自源的多行仅向目标写入一行的主要内容,如果未能解决你的问题,请参考以下文章