【发布时间】:2011-10-19 19:16:04
【问题描述】:
我正在尝试通过创建两个新列值来更新 SQL 表:一个唯一 ID,然后是刚刚创建的唯一 ID 的缩短整数版本。
使用我发现的技巧here(请参阅底部的“NEWID() 方式”),这就是我认为可行的方法:
Update Customer Set [UniqueId] = NEWID(), [UniqueIntegerId] = ABS(CAST(CAST([UniqueId] AS VARBINARY) AS INT))
但这会产生类似
[UniqueId] [UniqueIntegerId]
3C79...5A4DEB2 754988032
1FD6...828B943 754988032
1F48...E80F511 754988032
尝试完成此操作的正确语法是什么?
【问题讨论】:
-
我只在使用
NEWSEQUENTIALID而不是NEWID时看到重复,您使用的是什么版本的 SQL Server?我想这是 MAC 地址的常量位? -
版本是 Microsoft SQL Server 2008 (SP1)。
-
虽然实际上我的测试是在
insert上而不是更新。很确定您的更新将在[UniqueId]列的“之前”版本上运行,而不是“之后”版本。 -
@MartinSmith:确实会,正如this article 所证实的那样。
标签: tsql syntax uniqueidentifier