我们有一个 ETL 作业,它需要在 中插入一行Table X
,然后检索插入的行的IDENTITY
值以Table X
供以后的转换使用。
IDENTITY
用作代理键,例如这里。
在 SQL Server 中,可以使用SCOPE_IDENTITY,但这在 Azure Synapse(以前称为 Azure SQL 数据仓库)中不可用。
简单的例子
╔═══════════════╦═══════╗
║ Id (IDENTITY) ║ Value ║
╠═══════════════╬═══════╣
║ 1 ║ abc ║
║ 2 ║ def ║
╚═══════════════╩═══════╝
该作业将插入值“hij”。
╔═══════════════╦═══════╗
║ Id (IDENTITY) ║ Value ║
╠═══════════════╬═══════╣
║ 1 ║ abc ║
║ 2 ║ def ║
║ 3 ║ hij ║
╚═══════════════╩═══════╝
作业应该知道 Id 值 = 3。
注意:执行 MAX(Id) 将不起作用,因为 IDENTITY 列不保证增量值,同时其他插入可能会进入表中。
有人对此有建议的解决方案吗?