SQLServerでシステム内でユニークな値を生成するNEWID()の利用方法
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()の利用方法でした。






