回答

收藏

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

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

我正在尝试在表中手动创建新用户,但是在不引发异常的情况下无法生成“ UniqueIdentifier”类型…
! \+ l$ c' d$ J6 O- {2 L这是我的示例:# W" ]8 k6 {6 y. Z
DECLARE @id uniqueidentifier3 l5 T6 t! H2 d# ?6 L8 v
SET @id = NEWID()
- p5 f1 B! A% k1 tINSERT INTO [dbo].[aspnet_Users]% c! O4 B/ b9 J* @% j
           ([ApplicationId]6 X0 @$ ~% E/ x+ C& a' w
           ,[UserId]: ]. d$ b0 z  o7 t; |
           ,[UserName]
) m$ E  T* i' o0 J1 v           ,[LoweredUserName]+ k2 f: h% ?# D( Q% \6 u, N9 e( Y4 k
           ,[LastName]* m" W  h7 \! `  S, V+ Y8 d' p
           ,[FirstName]. X: J* ^2 c" J8 L7 ?0 u/ S! i% t& s
           ,[IsAnonymous]
" |4 h, }3 I) L, t           ,[LastActivityDate]
2 m8 X7 I3 X" v3 `           ,[Culture])+ B# g: G  B" }, R' W5 h
     VALUES
, z9 O2 g& U# Z! E0 I5 v$ c$ u           ('ARMS', z5 S" B( G( z
           ,@id
7 g9 o6 K, i) Y4 w- ?           ,'Admin'
) }3 z3 \/ L' f; ~; x. f           ,'admin'
8 ?* F0 R3 ]6 I. O  `/ M! Z. m+ O( I           ,'lastname'* O$ q7 p$ `  T
           ,'firstname'
) n* T  X2 Y7 e           ,0
6 ?% L9 o+ ~- |: S           ,'2013-01-01 00:00:00'3 g3 q5 y$ n, ]+ n
           ,'en')6 k& n) t8 I' H5 |. I" U+ X
GO
! h7 A  y" `! C6 x7 E, L抛出异常->消息8169,级别16,状态2,行4无法将字符串转换为uniqueidentifier。/ T0 I, `+ Q5 r+ i8 K% ?( l6 K
我使用了NEWID()方法,但是它不起作用…
' Y* x) P' w0 ^% Jhttp://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx; F/ `# ^: ]2 R$ d7 V# [
                ; ]+ y- e/ `2 I0 n! W7 l; h- [1 P
解决方案:7 r: U0 E1 o4 z0 m* ^
               
7 f: T/ U$ m) j5 @, K
( s* s5 L+ P' C5 I+ ?
+ m' b, I6 \1 E/ f                ApplicationId必须为类型UniqueIdentifier。如果您执行以下操作,您的代码可以正常工作:
1 p9 @. v8 Z+ _* I4 n; B, WDECLARE @TTEST TABLE
( Z; p/ p' N5 e: g' ?(
+ g" g+ ]  w0 k6 e  TEST UNIQUEIDENTIFIER2 U4 [+ }$ _5 k3 N
)4 \, I; p0 x- D9 w
DECLARE @UNIQUEX UNIQUEIDENTIFIER2 C5 f; y$ C' j* C0 I
SET @UNIQUEX = NEWID();
: f# f* u; o& ^INSERT INTO @TTEST
. q8 B8 p) J2 M+ j  \5 L# c(TEST)4 K- I9 t' M2 Z$ m5 R- i7 X
VALUES
) m  H( {3 c& ], _(@UNIQUEX);6 b, q7 \2 b+ Q7 x4 T
SELECT * FROM @TTEST' ?% f/ K6 G6 v' `
因此,我可以肯定地说这ApplicationId不是正确的数据类型。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则