从插入中获取主键

时间:2014-12-04 23:00:48

标签: sql-server ssis

我尝试使用SSIS进行从旧系统到新系统的数据迁移。我有表TableATableBOldTable。表格如下:

TableA

  • ID
  • BusinessTypeEnum
  • 其他

TableB

  • ID
  • TableB_ID(FK)
  • PermitNumber

OldTable

  • ID
  • BusinessType
  • PermitNumber

如您所见,TableATableB(在新系统中)实际上OldTable分为两个表。

我的问题是,为了在TableB中插入记录,我需要知道在PrimaryKey中插入相应记录时分配的TableA

我原本计划在尝试将记录插入表LookUp时执行TableB但是,TableA中存储的任何数据都不允许我返回

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

听起来你正在使用单一数据流: source - >拆分 - >两个目的地(TableATableB

如果您将流程划分为两个数据流,该怎么办?

  • 第一个只是从OldTable拉出并加载到TableA
  • 第二个 - 加载到TableB - 再次从OldTable拉出来,但是通过TableAMerge Join来获取Lookup的相关标识值{1}}来自那张桌子。

(注意:第二个流需要设置为仅在第一个流通过优先约束完成后运行,因为它依赖于OldTable在运行之前插入TableA的数据。)< / p>

答案 1 :(得分:0)

您可以使用insert语句中的OUTPUT Clause来返回标识列的值。

INSERT TableA (BusinessTypeEnum, Other)
OUTPUT INSERTED.ID
VALUES ('abc', 'def')

除了插入记录外,上面的内容就像选择一样。

我应该提到OUTPUT子句中有一个INTO子句,可以与批量插入一起使用。以上示例适用于单个记录插入。