如何将 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 插入代码编辑器?的主要内容,如果未能解决你的问题,请参考以下文章