如何在sql server中生成并手动插入uniqueidentifier?

时间:2013-06-24 11:22:52

标签: sql sql-server database tsql uniqueidentifier

大家好我正在尝试在我的表中手动创建一个新用户但是不能生成“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

Trow例外 - > Msg 8169,Level 16,State 2,Line 4 无法将字符串转换为uniqueidentifier。

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

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

2 个答案:

答案 0 :(得分:33)

ApplicationId必须是UniqueIdentifier类型。如果你这样做,你的代码就可以了:

DECLARE @TTEST TABLE
(
  TEST UNIQUEIDENTIFIER
)

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

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

SELECT * FROM @TTEST

因此,我认为可以安全地假设ApplicationId不是正确的数据类型。

答案 1 :(得分:4)

请检查表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