web-dev-qa-db-ja.com

NEWID()/ GUID / UUIDをコードエディターに挿入する方法は?

多くのコードエディターには、UUIDを取得するための組み込みのメニュー項目またはキーボード機能があります。たとえば、 CTRL + SHIFT + G Delphiでは、ソースコードの現在の位置に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を挿入するにはどうすればよいですか?

16

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() functionを呼び出せないと仮定します。タイプUNIQUEIDENTIFIERの変数を宣言すると、関数がその変数に値を保存し、その変数を次のようなコード内で使用します...

_DECLARE @GUID_Value UNIQUEIDENTIFIER;
 SET @GUID_Value = NEWID();

-- Now use this variable anywhere in your code.  
_

キーボードショートカットへの追加

SSMSにショートカットを追加してGUIDを生成する場合、奇妙な理由があります。次の2つが必要です。

  1. GUID valueを返すストアドプロシージャを作成します。
  2. そのストアドプロシージャを呼び出すキーショートカットを追加します。

プロセス定義

_CREATE PROCEDURE get_Guid
AS 
 SELECT NEWID();
_

ショートカットに追加する

SSMSから[ツール]-> [オプション]-> [環境]-> [キーボード]に移動します。

ストアドプロシージャの名前を目的のショートカットに追加します。 OKをクリックします。 SSMSを閉じて、再度開きます。準備完了です。

enter image description here

上記のスニペットに示すように、今あなたが押すと CTRL +  同じクエリウィンドウでGUID=値を生成します。

32
M.Ali

SQLプロンプト拡張機能がインストールされている場合、次のように新しいスニペットを作成できます。

スニペット:guid

説明:new GUID

コード:

'$GUID$'

テキストエディタでguidと入力すると、新しいGUIDで囲まれた's。

1
Danny Varod