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

Posted

技术标签:

【中文标题】如何将 NEWID() / GUID / UUID 插入代码编辑器?【英文标题】:How to insert a NEWID() / GUID / UUID into the code editor? 【发布时间】:2014-10-11 13:28:48 【问题描述】:

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

我知道我可以使用SELECT NEWID() 来生成 UUID,但我必须转到查询结果,将生成的 UUID 复制到我的剪贴板(删除之前的所有内容)然后返回代码并替换查询,这是一种糟糕的处理方式。

在 SQL Server Management Studio 中是否有任何我尚未找到的功能(可能使用 IntelliSense 代码 sn-ps?)来执行此操作?

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

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

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

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

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

【问题讨论】:

您可以只添加代码 sn-p 打印 select newid() (Tools->Code Snippets Manager) 并使用 ctrl+k+s 或 ctrl+k+x 调用它... @user3623784 SMSS 不会评估 SELECT NEWID(),但只会将代码复制到我不想要的代码中。 我建议在这里使用变量来捕获 NEWID() 的值,然后使用该变量进行进一步的操作。 顺便说一句:这两个 SQL 命令位于不同的文件中,因此变量不起作用。如果在同一个脚本中两次需要 UUID,则变量当然是合理的选择。 【参考方案1】:

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

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

例如在插入语句中

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,出于某种奇怪的原因。你需要做两件事。

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

过程定义

CREATE PROCEDURE get_Guid
AS 
 SELECT NEWID();

将其添加到快捷方式

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

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

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

【讨论】:

+1 另外我刚刚发现您可以将生成的 UUID 从查询结果选项卡拖放到代码编辑器中。这对我有用:) 当我在我的 sql 查询中运行 newid() 时,它给出了一个错误,指出 ERROR 1305 (42000): FUNCTION wallet_payout.newid 不存在。知道为什么吗? @Geek_To_Learn 然后使用 dbo.newid()。【参考方案2】:

如果你安装了 SQL Prompt 扩展,你可以像这样创建一个新的 sn-p...

片段: guid

描述: new GUID

代码:

'$GUID$'

现在在您的文本编辑器中输入guid,您将获得一个由's 包围的新GUID。

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于如何将 NEWID() / GUID / UUID 插入代码编辑器?的主要内容,如果未能解决你的问题,请参考以下文章

SQLSERVER如何使用递增排序的GUID做主键

sql如何将新产生的guid和一条其他表的数据插入当前表

聊聊用 UUID/GUID 作为主键那些坑

如何创建 GUID/UUID

如何测试有效的 UUID/GUID?

如何在 Python 中创建 GUID/UUID