【发布时间】:2021-06-09 09:48:48
【问题描述】:
我有一对具有外键关系的目标表。父表的主键是在插入时由数据库序列生成的,因此必须在生成父表的主键之后才能插入到子表中。
我想在 Azure 数据工厂中将一对记录作为单个事务插入表中。
是否可以在单个数据流中插入父表,然后使用新插入记录中的值插入子表?我在父级中有一个旧键值,可用于识别新生成的主键。
在 SQL 术语中,插入到子项中的内容如下所示:
INSERT INTO child_table
( foreign_key
, some_data_value
)
SELECT
parent_table.primary_key
, staging_table.some_data_value
FROM staging_table
JOIN parent_table
ON parent_table.legacy_value = staging_table.legacy_value
DataFlows 可以有 Custom Sink Ordering,其中可以设置表插入的顺序,但在这种情况下,我需要 Source 步骤来检索要在加载父级的 Sink 步骤之后执行的值。
把它分成两个DataFlows有两个缺点,两个insert没有封装在一个事务中,集群启动开销时间发生了两次。
【问题讨论】:
-
数据库平台是什么?
-
@wBob Azure SQL,我们正在探索通过带有 on-insert 触发器的视图插入以获取外键,或者编写存储过程来执行插入的可能性。但实际上 DB 平台还没有最终确定,它可能最终是 MS Dataverse。
标签: azure-data-factory azure-data-factory-2