回答

收藏

如何在SQL Server中生成并手动插入一个uniqueidentifier?

技术问答 技术问答 510 人阅读 | 0 人回复 | 2023-09-14

我正在尝试在表中手动创建新用户,但是在不引发异常的情况下无法生成“ UniqueIdentifier”类型…; c. X( _# o# {* S( y( P
这是我的示例:. C1 z+ n. ?* [8 K1 S# N! ?
DECLARE @id uniqueidentifier
6 F' r0 m( P1 L) `7 R( V0 G5 }: k0 oSET @id = NEWID()& b4 M( v( c/ {% P* |9 M1 O, u
INSERT INTO [dbo].[aspnet_Users]$ r0 F- _. k  d/ y0 K- l
           ([ApplicationId]
" z5 q! ?9 u/ v           ,[UserId]" b. d  o$ j) T5 R
           ,[UserName]
+ [6 F0 [# u) O+ I* p7 k, p           ,[LoweredUserName]( I1 }2 W( f5 Y4 T, e3 H4 z
           ,[LastName]
+ Z; W" z- ?* {( ]1 e$ ?1 G           ,[FirstName]
1 N- c) u6 X9 P% Y           ,[IsAnonymous]0 n% f: ^4 Q: \/ L( I- {
           ,[LastActivityDate]4 B" u7 Z$ p! p; D' p
           ,[Culture])
. ?' k+ |, N4 u1 a& l4 @$ |     VALUES1 n* H4 _% G! U" \' S4 @
           ('ARMS'
) T: b6 t0 z5 B/ }1 x           ,@id
% z! Q6 }4 k  b) k0 Y) U8 w' ~4 y" v           ,'Admin'
# |7 Z  r7 Y( ~/ e7 Y  ~           ,'admin'- H4 s  @) Q4 ?0 b6 R) v0 L  f0 O5 y
           ,'lastname'
* q  J2 ]+ l4 @. F. H. ]6 m           ,'firstname', r3 O; P! I- v- T
           ,0. z( Z. F. q8 B7 n* }
           ,'2013-01-01 00:00:00'
/ N2 B' n$ i, i9 T6 k5 J           ,'en')  a6 P8 k. n9 ]4 q5 o* C
GO
! l) ~4 j- h/ x/ w抛出异常->消息8169,级别16,状态2,行4无法将字符串转换为uniqueidentifier。
7 V4 l2 G) i" h# }" k. J1 V我使用了NEWID()方法,但是它不起作用…8 d% ^" S' C0 M; X9 t( m
http://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx/ `# R) W2 ~2 ?( Z' _
                2 u" ]8 q8 Q2 h$ P6 s
解决方案:
# L6 T* M4 s; K9 g, J! j% p               
  r) ^% V  w* D
* S5 s: W8 G) i) r& |* S- |- t/ u. D3 [) R5 c9 P7 ]
                ApplicationId必须为类型UniqueIdentifier。如果您执行以下操作,您的代码可以正常工作:4 B/ u/ Y& ~$ N) n
DECLARE @TTEST TABLE* N, p$ t% N; x
(
4 S9 [0 Y4 Q% G& |7 ]  TEST UNIQUEIDENTIFIER
4 x) P, K$ X) b9 X+ ])
" P/ ^3 w/ w. b: s# R8 L/ e9 s* j- EDECLARE @UNIQUEX UNIQUEIDENTIFIER5 M; C+ Y4 ^+ G8 t
SET @UNIQUEX = NEWID();0 L5 t, r4 Z) R! d' V8 f2 Y1 e; B
INSERT INTO @TTEST) d' c$ i: i  ?* c  W* a
(TEST)* m/ H) v4 c% N" u/ k
VALUES
" v* U7 `+ u2 n7 ~% g(@UNIQUEX);
: z+ C7 s& P( Q5 X( M( WSELECT * FROM @TTEST  j: t  J+ x" `! O
因此,我可以肯定地说这ApplicationId不是正确的数据类型。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则