我正在 azure 数据仓库 (synapse) 上创建一个表。我需要向维度表添加代理键。我创建的表的身份如下:
CREATE TABLE DimAccount
(
AccountKey INT NOT NULL IDENTITY(1,1)
,AccountID CHAR
)
当我插入值时,我会在 AccountKey 中获得随机数,例如
AccountKey
17
21
56
我希望 AccountKey 从 1 开始连续。有人可以建议吗?
最佳答案
不保证身份值没有间隙。它们仅保证大于表中之前的数字。
没有问题; identity
的行为符合其应有的样子。这些差距实际上对于绩效很重要。任何生成无间隙数字的努力往往需要大量额外的锁定和同步——但收效甚微。然后,如果您删除任何行或回滚事务,间隙就会重新出现。
在 SQL Server 中,您可以使用序列来获取所需的结果。我认为 SQL Azure 中没有该选项。
关于sql - 使用标识而不是顺序时的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61868272/