私は自動生成ID(ID列)を持つ1つのテーブルを持っています この値は@@ identityを使用して取得します。これを一意の識別子に変換できますか?@@ IDENTITYをSQLのuniqueidentifierに変換します
select @@IDENTITY
set @Id = CONVERT(uniqueidentifier, @@IDENTITY)
私は自動生成ID(ID列)を持つ1つのテーブルを持っています この値は@@ identityを使用して取得します。これを一意の識別子に変換できますか?@@ IDENTITYをSQLのuniqueidentifierに変換します
select @@IDENTITY
set @Id = CONVERT(uniqueidentifier, @@IDENTITY)
@@IDENTITY
は、現在のセッションの最後のIDを返します(INSERT
,SELECT INTO
、またはbulk copy
ステートメントから)。
uniqueidentifier列をID列として設定することはできません。これはSQL Serverではサポートされていません。そのため、実際にINTアイデンティティを何らかのハッシュに変換しようとしない限り、あなたの質問は意味をなさないでしょうか?
ほとんどあなたが行うことができますが、それをハッシュ(の真にIsIdentity
設定した整数ID列を言うことができます)、インサートから@@IDENTITY
を取るです - 注:結果のハッシュは、GUIDされていません。
INSERT INTO [Test].[dbo].[tbl_uqTest]
(Test)
VALUES ('x')
SELECT CONVERT(VARCHAR(32), HASHBYTES('MD5', CONVERT(VARCHAR(255), @@IDENTITY)), 2)
しかし私は言うでしょう - 私は本当にこれを行うには良い理由を考えることができません!
この変換は意味をなさない。あなたは何を達成しようとしていますか? –
あなたの質問には関係ありませんが、 'scope_identity()'は '@@ identity'よりも常に良い選択です。 '@@ identity'は与えられたセッションの最後のアイデンティティを与えますが、scope_identity()は現在のセッションとスコープの最後のアイデンティティを返します。 http://msdn.microsoft.com/en-us/library/ms190315.aspx –