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

问题描述 投票:0回答:4

许多代码编辑器都有内置菜单项或键盘功能来获取 UUID,例如,当我在 Delphi 中按 CTRL + SHIFT + G 时,它会在源代码中的当前位置插入 GUID。

我知道我可以使用

SELECT NEWID()
生成UUID,但我必须转到查询结果,将生成的UUID复制到我的剪贴板(杀死之前在那里的任何内容),然后返回代码并替换查询这是处理这个问题的一种糟糕的方式。

在 SQL Server Management Studio 中是否有任何我还没有找到的函数(可能使用 IntelliSense 代码片段?)来执行此操作?

关于为什么我需要这个函数的一些背景,我经常这样编写 SQL 脚本:

INSERT INTO table (table_id, value) 
VALUES ('112C8DD8-346B-426E-B06C-75BBA97DCD63', 'ABC');

我不能只使用调用

NEWID()
,因为我稍后(在另一个文件中)想使用以下方式引用特定行:

WHERE table_id = '112C8DD8-346B-426E-B06C-75BBA97DCD63'

如何将 UUID 插入代码编辑器?

sql sql-server ssms
4个回答
87
投票

NEWID()
本身就是一个函数。调用时返回一个 GUID 值。

您不必将其放在单独的窗口中,然后从那里复制粘贴值。只需将该函数放在需要 GUID 值的位置,当在运行时执行查询时,将使用该函数返回的值。

例如在 Insert 语句中

INSERT INTO TableName (Col1 , Col2, Col3)
VALUES (1 , 'Value 1', NEWID())  

如果您希望 col3 具有 GUID 值,则无需复制粘贴从 NEWID() 函数返回的值,而是使用该函数本身。在运行时,guid 值将被重新调整并插入到 col3 中。

如果您正在更新,也同样

UPDATE TableName 
  SET Col3 = NEWID()
WHERE <Some Condition>

同样,您不必复制粘贴从 NEWID() 函数返回的值,只需使用该函数本身。

另一个选项是假设您在代码中的某个位置无法调用

NEWID()
函数。您可以声明一个 UNIQUEIDENTIFIER 类型的变量,调用函数将其值存储到该变量,然后在代码中使用该变量,例如...

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

-- Now use this variable anywhere in your code.  

添加到键盘快捷键

出于某种奇怪的原因,如果您想添加 SSMS 的快捷方式来为您生成 GUID。你需要做两件事。

  1. 创建一个返回 GUID 值的存储过程。
  2. 添加一个快捷键来调用该存储过程。

过程定义

CREATE PROCEDURE get_Guid
AS 
 SELECT NEWID();

将其添加到快捷方式

从 SSMS 转到工具 --> 选项 --> 环境 --> 键盘

将存储过程的名称添加到您想要的快捷方式中。单击“确定”。关闭 SSMS 并再次重新打开它,您就可以开始了。

enter image description here

如上面的截图所示,现在如果您按 CTRL + 0,它将在同一查询窗口中为您生成一个 GUID 值。


5
投票

对于 SQL 服务器,也许还有其他。

可以使用转换函数在 SQL Server 中插入字符串编码的 Guid/uuid。 请参阅下面示例中的归零 Guid。

INSERT INTO [schema].[table]
           ([Id]
           ,[stuff])
     VALUES
           (Convert(uniqueidentifier, N'00000000-0000-0000-0000-000000000000')
           ,'Interesting Stuff'
)

1
投票

如果您安装了 SQL Prompt 扩展,您可以像这样创建一个新的代码片段...

片段:

guid

描述:

new GUID

代码:

'$GUID$'

现在在文本编辑器中输入

guid
,您将获得一个被
'
s 包围的新 GUID。


0
投票

这些可以在 Jetbrains Datagrip 等数据库客户端上运行吗?

更具体地说,我正在寻找一种在向表的 GUI 中输入和测试数据时生成 uuid 的方法。我记得我以前是用类似于 Excel 公式的方式来实现的,我在列的字段中写了一些内容作为记录,它就会知道我想要生成一个 UUID。按 Ctrl+Enter 后,它将插入/更新数据并生成 uuid。

我只是不记得我以前写过什么:)

© www.soinside.com 2019 - 2024. All rights reserved.