Как вставить NEWID()/GUID/UUID в редактор кода?

Многие редакторы кода имеют встроенный элемент меню или функцию клавиатуры для получения UUID, например, когда я нажимаю CTRL + SHIFT + G в Delphi, он вставляет GUID в текущую позицию в исходном коде.

Я знаю, что могу использовать 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'

Как я могу вставить UUID в редактор кода?

Ответ 1

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 для вас. Вам нужно было бы две вещи.

  • Создайте хранимую процедуру, которая возвращает значение GUID.
  • Добавьте ключевой ярлык для вызова хранимой процедуры.

Определение Proc

CREATE PROCEDURE get_Guid
AS 
 SELECT NEWID();

Добавьте его в ярлыки

Из вашего SSMS goto Tools → Options → Environment → Keyboard

добавьте имя хранимой процедуры в ярлык, который вы хотите. Нажмите "ОК". Закройте SSMS и снова откройте его, и вы хорошо пойдете.

enter image description here

Как показано в приведенном выше снимке снимок, теперь, если вы нажмете CTRL + 0, он будет генерировать значение GUID для вас в том же окне запроса.

Ответ 2

Если у вас установлено расширение SQL Prompt, вы можете создать новый фрагмент, например...

Фрагмент: guid

Описание: new GUID

Код:

'$GUID$'

Теперь введите guid в текстовый редактор, и вы получите новый идентификатор GUID, окруженный ' s.