我有一个带有自动生成ID的表(标识列) 我使用@@ identity来获取该值。如何将其转换为唯一标识符?
select @@IDENTITY
set @Id = CONVERT(uniqueidentifier, @@IDENTITY )
答案 0 :(得分:4)
SQL Server uniqueidentifier
类型不是“唯一标识符”。是GUID,一个16字节RPC UUID类型的值。将SQL Server uniqueidentifier
转换为int
和从{{1}}转换是没有意义的。
答案 1 :(得分:0)
@@IDENTITY
返回当前会话中的最后一个身份(来自INSERT
,SELECT INTO
或bulk copy
声明。
您无法将uniqueidentifier列设置为标识列 - SQL Server不支持此功能。因此,除非你真的试图将INT身份转换为某种哈希值,否则你的问题没有意义吗?
你可以做的最多的事情是从插入中取@@IDENTITY
(假设一个整数ID列,IsIdentity
设置为true)然后哈希 - 注意:结果哈希不是GUID :
INSERT INTO [Test].[dbo].[tbl_uqTest]
( Test )
VALUES ( 'x' )
SELECT CONVERT(VARCHAR(32), HASHBYTES('MD5', CONVERT(VARCHAR(255), @@IDENTITY)), 2)
然而,我会说 - 我真的不能想到这样做的好理由!