我有一个带有自动生成ID(标识列)的表 我使用@@ identity.I可以将此值转换为唯一标识符吗?将@@ IDENTITY转换为sql中的uniqueidentifier
select @@IDENTITY
set @Id = CONVERT(uniqueidentifier, @@IDENTITY)
我有一个带有自动生成ID(标识列)的表 我使用@@ identity.I可以将此值转换为唯一标识符吗?将@@ IDENTITY转换为sql中的uniqueidentifier
select @@IDENTITY
set @Id = CONVERT(uniqueidentifier, @@IDENTITY)
@@IDENTITY
返回当前会话中的最后一个标识(来自INSERT
,SELECT INTO
或bulk copy
语句)。
你不能有一个uniqueidentifier列设置为标识列 - 这在SQL Server中不受支持。因此,除非你真的试图将INT标识转换为某种散列,否则你的问题是没有意义的?
最你可以做的就是把@@IDENTITY
自刀片(中可以说与IsIdentity
设置为true的整数ID列),然后凑了 - 注意:结果散列不是一个GUID:
INSERT INTO [Test].[dbo].[tbl_uqTest]
(Test)
VALUES ('x')
SELECT CONVERT(VARCHAR(32), HASHBYTES('MD5', CONVERT(VARCHAR(255), @@IDENTITY)), 2)
但我会说 - 我真的不能想到这样做的好理由!
该转换没有意义。你想达到什么目的? – 2012-03-28 16:35:14
与您的问题无关,但'scope_identity()'几乎总是比'@@ identity'更好的选择。 '@@ identity'给出给定会话的最后一个身份,而'scope_identity()'给出当前会话和范围中的最后一个身份。 http://msdn.microsoft.com/en-us/library/ms190315.aspx – 2012-03-28 16:55:40