2

我们有一个 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 列不保证增量值,同时其他插入可能会进入表中。

有人对此有建议的解决方案吗?

4

0 回答 0