回答

收藏

如何在代码编辑器中插入NEWID()/ GUID / UUID?

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

许多代码编辑器都有一个内置菜单项或键盘功能来获取UUID,例如,当我在Delphi中按CTRL+- M% Y: W# `  h. S* O8 f
SHIFT+时G,它将在源代码的当前位置插入一个GUID。- l' j& Z. Y3 b2 T7 m0 K. l8 X
我知道我可以SELECT* K# E, B& I* y& Q
NEWID()用来生成UUID,但是我必须转到查询结果,将生成的UUID复制到剪贴板(杀死之前的内容),然后返回代码并替换查询处理这个问题的糟糕方法。/ v( D, y9 ?3 T/ V5 P) B
在我尚未找到的SQL Server Management Studio中,是否有任何功能(也许使用IntelliSense代码段?)来执行此操作?
# o, I' ~" m. l关于为什么需要此功能的一些背景知识,我经常这样编写SQL脚本:
/ o; i" p; O; V: o% {& }0 aINSERT INTO table (table_id, value)
( [  C* E- _5 v: P. FVALUES ('112C8DD8-346B-426E-B06C-75BBA97DCD63', 'ABC');0 g* m  C% d/ r% Z( t+ `& [" C3 }
我不能只使用call NEWID(),因为稍后(在另一个文件中)我想使用以下方式引用特定的行:. s8 R, @; u/ f/ N2 T
WHERE table_id = '112C8DD8-346B-426E-B06C-75BBA97DCD63'  z9 a- e4 |9 }+ u1 c
如何将UUID插入代码编辑器?" v" O; h5 p: Z8 R/ g" M
               
6 Z) |9 X8 S! y. t  v8 X: r解决方案:
( o) m8 W' V" p2 @                6 ?$ l* A/ j: A6 L) Q0 q3 k
# o0 {: t0 b( |1 _- \( j5 p
' D/ @6 f3 Z2 _$ H0 ]* J  \/ f- [
                NEWID()本身就是一个功能。调用时返回GUID值。
+ D( U/ r: X, R8 h) J您不必将其放在单独的窗口中,然后从那里复制粘贴值。只需将函数放在需要GUID值的位置,然后在运行时执行查询时,将使用此函数返回的值。
3 ^( t' r5 z! ]例如在插入语句中
! D1 v) n2 E) A6 `( cINSERT INTO TableName (Col1 , Col2, Col3)4 s9 n& b: P* W* U: j
VALUES (1 , 'Value 1', NEWID())
! Z1 U" ]+ N! ~: }如果希望col3具有GUID值,则无需复制粘贴从NEWID()函数返回的值,但是您可以使用函数本身。在运行时,将重新调整guid值并将其插入col3。. K; D* @# o: B9 W; {5 w9 P
同样,如果您要更新- R' }" v0 w$ f; r. S7 _1 g
UPDATE TableName
. O0 o! b4 t( Y% K  SET Col3 = NEWID()3 O. l& F1 j* X' b: `2 q) M3 [9 {
WHERE
3 g9 ?1 O# d% |4 N同样,您不必复制粘贴从NEWID()函数返回的值,只需使用函数本身即可。2 z- X* L2 D  M1 Y
另一个选择是假设您在代码内无法调用该NEWID()函数的位置。您将声明一个UNIQUEIDENTIFIER类型的变量,调用该函数将其值存储到该变量,然后在您的代码中使用该变量,例如…
* M& @* I1 G7 i3 WDECLARE @GUID_Value UNIQUEIDENTIFIER;
3 m1 N5 h" f; o. e( H* H5 L' o SET @GUID_Value = NEWID();
9 F- j1 m6 [) V1 x6 H) p5 ]% H-- Now use this variable anywhere in your code.
; v, X3 V" a! f添加到键盘快捷键( B* Y' A9 O1 P5 ~
由于某些奇怪的原因,如果您想向SSMS添加快捷方式来为您生成GUID。您将需要两件事。
) ^( P; ]5 W' @1 V7 l$ u* ^[ol]创建一个存储过程,该过程返回GUID值。
* g* B; U6 C# J( c) N8 b添加一个快捷键来调用该存储过程。
( s  f5 @2 e% @9 J7 g5 M[/ol]
9 d9 @6 X% x0 V$ L# k0 C过程定义
2 t$ T  U' E+ a( N' sCREATE PROCEDURE get_Guid6 ?# M  T2 V. n
AS
* w1 [1 P1 Q8 T7 V SELECT NEWID();, }1 u& s) I2 m1 V! o
将其添加到快捷方式0 Z" Y$ J& j! @# _2 j
从您的SSMS转到工具->选项->环境->键盘
$ ]& q3 ~: u! u/ g+ ?/ M. u3 U将存储过程的名称添加到所需的快捷方式。单击确定。关闭SSMS,然后重新打开它,一切就好了。7 |+ D% a8 V: g4 b

$ H" O! _0 ^2 e
2 D7 z5 A" q, I0 |
. Z5 k( t& o/ X3 u- x如上面的片段所示,现在如果按CTRL + 0,它将在同一查询窗口中为您生成一个GUID值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则