web-dev-qa-db-ja.com

SQL ServerのUniqueidentifierはどのようにして常にグローバルに一意の値になりますか?

UniqueIdentifierに関するMicrosoftのドキュメントに従って、この値は常に一意であり、ネットワーククロックとCPUクロック時間に基づいているため、同じドキュメントに記載されています

uniqueidentifier列には、UNIQUEまたはPRIMARY KEY制約も列に指定されていない限り、個々のuniqueidentifier値の複数のオカレンスが含まれる場合があります。

2つの異なるネットワークでネットワークアドレス(Macアドレス)が同じになる可能性があるため、UniqueIdentifier(GUID)をグローバルに一意にする方法について結論を出すことができません常に一意のUniqueIdeitifer値を確保するために、プライマリまたは一意の制約にする必要があります。

https://technet.Microsoft.com/en-us/library/ms190215(v = sql.105).aspx

7

UNIQUEIDENTIFIER列には、入力したUNIQUEIDENTIFIERを格納できます。このコードを取る:

CREATE TABLE dbo.Test (MyID UNIQUEIDENTIFIER);
INSERT INTO dbo.Test VALUES ('809A6AA3-E6D7-4099-8D6C-6B21ED732013');
INSERT INTO dbo.Test VALUES ('809A6AA3-E6D7-4099-8D6C-6B21ED732013');
INSERT INTO dbo.Test VALUES ('809A6AA3-E6D7-4099-8D6C-6B21ED732013');
SELECT * FROM dbo.Test;

一意性を強制するテーブルについて何かを指定しない限り、それを妨げるものは何もありません。

7
Brent Ozar