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

时间:2014-10-11 13:28:48

标签: sql sql-server ssms

许多代码编辑器都有一个内置菜单项或键盘功能来获取UUID,例如当我按 CTRL + SHIFT + G

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

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

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

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

我不能只使用调用NEWID(),因为我后来想使用以下方式引用特定行:

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

3 个答案:

答案 0 :(得分:26)

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. 添加密钥快捷方式以调用存储过程。
  3. Proc定义

    CREATE PROCEDURE get_Guid
    AS 
     SELECT NEWID();
    

    将其添加到快捷方式

    从您的SSMS转到工具 - &gt;选项 - &gt;环境 - &gt;键盘

    将存储过程的名称添加到您想要的快捷方式中。单击确定。关闭SSMS并重新打开它,你很高兴。

    enter image description here

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

答案 1 :(得分:1)

如果您安装了 SQL提示符扩展程序,则可以创建一个新的代码段...

代码段 guid

说明: new GUID

<强>代码:

'$GUID$'

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

答案 2 :(得分:1)

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

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

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