如何在 Azure SQL 数据仓库的列上获取自动生成的 INT ID

How to get auto-generated INT IDs on a column in Azure SQL Data Warehouse

我知道 Azure SQL 数据仓库不支持 IDENTITY,但是是否有另一种方法可以以相同的方式自动将 INT 值分配给插入时的列?

你可以做的是首先从 table 获取最大 RowId,然后在你源的 select 语句中使用 row_number() 语句生成行号,然后只需将 MaxRowId 添加到 row_number 即可创建连续的 RowId 系列,

DECLARE @MaxRowId int
SET @MaxRowId = (SELECT ISNULL(MAX(RowId),0) FROM dbo.MyTable)


INSERT INTO MyTable (RowId, col1, col2)
SELECT
ROW_NUMBER() OVER(ORDER BY [col1]) + @MaxRowId RowId
, [col1]
, [col2]
FROM dbo.MySourceTable