31

我正在尝试在我的表中手动创建一个新用户,但发现如果代码不引发异常就无法生成“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 行无法将字符串转换为唯一标识符。

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

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

4

3 回答 3

44

ApplicationId 必须是 type UniqueIdentifier。如果您这样做,您的代码可以正常工作:

DECLARE @TTEST TABLE
(
  TEST UNIQUEIDENTIFIER
)

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

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

SELECT * FROM @TTEST

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

于 2013-06-24T11:31:08.730 回答
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
于 2013-06-24T11:54:48.303 回答
0

检查您的列数据类型应该是唯一标识符并且您在插入值时使用了正确的顺序

INSERT INTO [dbo].[aspnet_Users]
([ApplicationId],[UserId],[UserName],[LoweredUserName],[LastName]
,[FirstName],[IsAnonymous],[LastActivityDate],[Culture])
VALUES ('ARMS',NEWID(),'Admin','admin','lastname','firstname,0
,'2013-01-01 00:00:00','en')
于 2021-09-14T17:27:06.543 回答