许多代码编辑器都有内置菜单项或键盘功能来获取 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 插入代码编辑器?
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。你需要做两件事。
CREATE PROCEDURE get_Guid
AS
SELECT NEWID();
从 SSMS 转到工具 --> 选项 --> 环境 --> 键盘
将存储过程的名称添加到您想要的快捷方式中。单击“确定”。关闭 SSMS 并再次重新打开它,您就可以开始了。
如上面的截图所示,现在如果您按 CTRL + 0,它将在同一查询窗口中为您生成一个 GUID 值。
对于 SQL 服务器,也许还有其他。
可以使用转换函数在 SQL Server 中插入字符串编码的 Guid/uuid。 请参阅下面示例中的归零 Guid。
INSERT INTO [schema].[table]
([Id]
,[stuff])
VALUES
(Convert(uniqueidentifier, N'00000000-0000-0000-0000-000000000000')
,'Interesting Stuff'
)
如果您安装了 SQL Prompt 扩展,您可以像这样创建一个新的代码片段...
片段:
guid
描述:
new GUID
代码:
'$GUID$'
现在在文本编辑器中输入
guid
,您将获得一个被 '
s 包围的新 GUID。
这些可以在 Jetbrains Datagrip 等数据库客户端上运行吗?
更具体地说,我正在寻找一种在向表的 GUI 中输入和测试数据时生成 uuid 的方法。我记得我以前是用类似于 Excel 公式的方式来实现的,我在列的字段中写了一些内容作为记录,它就会知道我想要生成一个 UUID。按 Ctrl+Enter 后,它将插入/更新数据并生成 uuid。
我只是不记得我以前写过什么:)