我有这种情况:
源节点:
架构1:
- 表 1:id、field1、field2
- 表2:id、table1_id、table3_id
- 表 3:标识
- 表4:id,table1_id
架构2:
- 表 5:id、table3_id、table6_id、field3、field4
- 表 6:标识
目标节点:
架构1:
- 表 7:id、field1、field2、field3、field4。
为了解决这个问题,我创建了一个“默认”类型的路由器,每个表的触发器和 trigger_router 表中的相应行。之后,我在 transform_table 中创建了一行来管理从源节点中的表 1 到目标节点中的表 7 的转换。这是我的问题:起初,我试图在transform_table中创建一行,用于从Table6到Table7中获取数据,但是我不能使用任何主键在源中直接链接Table1和Table6。现在我正在尝试使用查找转换来获取 field3 和 field4。为了实现这一点,我在 transform_column 表中创建了一行,如下所示:
TARGET_COLUMN_NAME: field3
SOURCE_COLUMN_NAME: null
PK: 0
TRANSFORM_TYPE:lookup
TRANSFORM_EXPRESSION:
SELECT field3
FROM schema1.table1 s1t1
INNER JOIN schema1.table2 s1t2 ON s1t2.table1_id = s1t1.id
LEFT JOIN schema1.table3 s1t3 ON s1t3.id = s1t2.table3_id
LEFT JOIN schema2.table5 s2t5 ON s2t5.table3_id = s1t3.id
LEFT JOIN schema2.table6 s2t6 ON s2t6.id = s2t5.table6_id
WHERE s1t1.id = :ID
我知道,当转换发生时, :ID 变量将被替换为我得到的 table1 行的 id。我遇到的问题是 field3 和 field4 在某些 table7 行中可能为 NULL(正如您可以从查询中的 LEFT JOINS 想象的那样)。所以我得到了错误
预期为单行,但在转换 source_2_target_table7_table1_schema1 上查找目标列 field3 时未返回任何行
当查找表达式不返回任何行时,有什么方法可以强制 SymmetricDS 在此列中复制 NULL 值?或者有没有其他方法可以实现这种同步?
提前致谢