У нас есть задание 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 не гарантирует инкрементных значений, а другие вставки могут go в таблицу тем временем .
Есть ли у кого-нибудь предложения по этому поводу?