SQLServerでシステム内でユニークな値を生成するNEWID()の利用方法

2018-05-10SQLServer

SQLServerでシステム内でユニークな値を利用したい時があります。

そのような時に便利に使えるのがNEWID()です。

UNIQUEIDENTIFIER型の一意な値を作成するNEWID()

NEWID()はUNIQUEIDENTIFIER型の一意な値を作成する関数です。

NEWID()を利用することで、サロゲートキーを簡単に生成することができます。


--テーブルを準備する
CREATE TABLE 顧客管理テーブル
(
     名前            VARCHAR(50)
    ,所属会社        VARCHAR(50) 
    ,部署            VARCHAR(50) 
    ,サロゲートキー  UNIQUEIDENTIFIER DEFAULT NEWID()
)

--データを準備する
INSERT INTO 顧客管理テーブル VALUES ( 'トラスト1号', 'システムトラスト', '技術部', NEWID())
INSERT INTO 顧客管理テーブル VALUES ( 'トラスト2号', 'システムトラスト', '営業部', NEWID())
INSERT INTO 顧客管理テーブル VALUES ( 'トラスト3号', 'システムトラスト', '技術部', NEWID())
INSERT INTO 顧客管理テーブル VALUES ( 'トラスト4号', 'システムトラスト', '総務部', NEWID())
INSERT INTO 顧客管理テーブル VALUES ( 'トラスト5号', 'システムトラスト', '技術部', NEWID())

--テーブルを検索する
SELECT
     名前
    ,所属会社
    ,部署
    ,キー
FROM 
   顧客管理テーブル
ORDER BY
     所属会社
    ,部署
    ,名前

--テーブルを削除する
DROP TABLE 顧客管理テーブル

実行結果は以下の通りです。

名前 所属会社 部署 サロゲートキー
トラスト2号 システムトラスト 営業部 B3936363-2C09-4033-BE77-0DCF29B12671
トラスト1号 システムトラスト 技術部 F2F79653-5EA3-4760-8F50-43B8DDA4ED07
トラスト3号 システムトラスト 技術部 DB1DD111-FABC-4AA9-B88E-878FDAB167E5
トラスト5号 システムトラスト 技術部 65AE3E67-BF2A-4AC2-B0D9-0EDD5789D525
トラスト4号 システムトラスト 総務部 9A27DED2-3E3E-47A5-B016-2C1A40A3E184

サロゲートキーにランダムでユニークな値が設定されています・

参考

NEWID()はRFC4122に準拠しています。
RFC4122についてはこちらを参照しててください。

以上、SQLServerでシステム内でユニークな値を生成するNEWID()の利用方法でした。

 

株式会社システムトラスト

人材募集中です。

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ