2013-06-24 46 views
16

大家好,我想在我的表手動創建一個新用戶,但不可能不拋出異常生成一個「唯一標識符」型......如何在sql server中生成並手動插入uniqueidentifier?

這是我的例子:

DECLARE @id uniqueidentifier 
SET @id = NEWID() 

INSERT INTO [dbo].[aspnet_Users] 
      ([ApplicationId] 
      ,[UserId] 
      ,[UserName] 
      ,[LoweredUserName] 
      ,[LastName] 
      ,[FirstName] 
      ,[IsAnonymous] 
      ,[LastActivityDate] 
      ,[Culture]) 
    VALUES 
      ('ARMS' 
      ,@id 
      ,'Admin' 
      ,'admin' 
      ,'lastname' 
      ,'firstname' 
      ,0 
      ,'2013-01-01 00:00:00' 
      ,'en') 
GO 

特羅例外 - > 消息8169,級別16,狀態2,行4 未能將字符串轉換爲uniqueidentifier。

我使用NEWID()方法,但它不是工作...

http://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx

+0

這應該做工精細 - http://sqlfiddle.com/#!6/699d6/1 –

+1

什麼類型你的表中是否有'UserID'列?你確定其他列不是'UniqueIdentifier'類型,你插入字符串? ApplicationID可能? –

+3

錯誤可能是另一列,我的猜測是ApplicationID,ApplicationID的數據類型是什麼? –

回答

27

的applicationID必須UniqueIdentifier類型。您的代碼工作正常,如果你這樣做:

DECLARE @TTEST TABLE 
(
    TEST UNIQUEIDENTIFIER 
) 

DECLARE @UNIQUEX UNIQUEIDENTIFIER 
SET @UNIQUEX = NEWID(); 

INSERT INTO @TTEST 
(TEST) 
VALUES 
(@UNIQUEX); 

SELECT * FROM @TTEST 

所以我會說這是安全的假設,ApplicationId不正確的數據類型。

3

請檢查表aspnet_Users中的Column ApplicationId數據類型,ApplicationId列的數據類型應該是uniqueidentifier。

* 你的參數順序傳遞錯誤, 參數@id應該第一個參數傳遞,但在你的腳本,它被放置在第二個參數。 *

因此引發錯誤..

請參考,示例腳本:

DECLARE @id uniqueidentifier 
SET @id = NEWID() 
Create Table #temp1(AppId uniqueidentifier) 

insert into #temp1 values(@id) 

Select * from #temp1 

Drop Table #temp1 
相關問題