将@@ IDENTITY转换为sql中的uniqueidentifier

时间:2012-03-28 16:28:12

标签: sql sql-server

我有一个带有自动生成ID的表(标识列) 我使用@@ identity来获取该值。如何将其转换为唯一标识符?

select @@IDENTITY 
set @Id = CONVERT(uniqueidentifier, @@IDENTITY ) 

2 个答案:

答案 0 :(得分:4)

SQL Server uniqueidentifier类型不是“唯一标识符”。是GUID,一个16字节RPC UUID类型的值。将SQL Server uniqueidentifier转换为int和从{{1}}转换是没有意义的。

答案 1 :(得分:0)

@@IDENTITY返回当前会话中的最后一个身份(来自INSERTSELECT INTObulk 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) 
然而,我会说 - 我真的不能想到这样做的好理由!