Uniqueidentifier veri kullanma
The uniqueidentifier data type stores 16-byte binary values that operate as globally unique identifiers (GUIDs).Ikilik tabandaki bir sayıyı benzersiz BIR GUID, dünyanın başka bir bilgisayar, bir GUID değerini kopyasını oluşturur.Ana bir GUID için pek çok bilgisayar birçok sitelerinde bulunan bir ağda benzersiz olması gereken tanımlayıcı atamak için kullanılmasıdır.
Bir GUID değeri bir uniqueidentifier sütun, genellikle aşağıdaki iki yoldan birini kullanarak alınır:
' De bir Transact-SQL deyim, toplu iş veya NEWID işlevini çağırarak, komut dosyası.
Uygulama kodu, uygulama API işlev ya da yöntem çağırarak, bir guıd DEĞERINI verir.
The Transact-SQL NEWID işlev and the application API functions and methods generate new uniqueidentifier values from the identification number of their network card plus a unique number from the CPU clock. Her ağ kartı için benzersiz bir kimlik numarası vardır.The uniqueidentifier value that is returned by NEWID is generated by using the network card on the server.The uniqueidentifier value returned by application API functions and methods is generated by using the network card on the istemci.
C uniqueidentifier değer, genellikle sabit tanımlanmadı. Belirtebileceğiniz bir uniqueidentifier aşağıdaki yöntemlerle sabit:
Karakter dize biçimi: '6F9619FF-8B86-D011-B42D-00C04FC964FF'
Ikili biçimi: 0xff19966f868b11d0b42d00c04fc964ff
The uniqueidentifier data type does not automatically generate new IDs for inserted rows in the way the kimlik özellik does. Örneğin, yeni'yi edinmek için uniqueidentifier değerleri, bir tablo bulunmalıdır bir DEFAULT yan tümce belirtme NEWID veya NEWSEQUENTIALID işlev veya INSERT ifadeleri kullanmalısınız NEWID Function.
CREATE TABLE MyUniqueTable
(UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(),
Characters VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO
Not
NEWSEQUENTIALID, sayfa Çekişme dizinlerinin yaprak düzeyde azaltmak için bir Guıd oluşturmak için kullanabilirsiniz.Yalnızca VARSAYıLAN kısıtlamalar tablo sütun türü ile NEWSEQUENTIALID kullanılabilir. uniqueidentifier.
uniqueidentifier sütunlar, bir kişi birden fazla kopyasını içerebilir uniqueidentifier değer, UNIQUE veya birincil anahtar kısıtlamaları da sütun için belirtilen sürece. Yabancı anahtar sütun, başvuran bir uniqueidentifier başka bir tablodaki birincil anahtar kişi birden fazla kopyasını gerekir uniqueidentifier değer Kaynak tablosundaki aynı birincil anahtarı birden çok satır başvuru.
A tablo katları olabilir uniqueidentifier sütunlar. Bir uniqueidentifier sütun Her tablo ROWGUIDCOL özelliğiyle belirtilen için. ROWGUIDCOL özellik that indicates uniqueidentifier sütunundaki değerler, tablodaki satırların benzersiz olarak tanımlar. Ancak, özellik bu zorlamak için hiçbir şey yapmaz.Sütun için birincil anahtar kısıtlaması belirlemek gibi diğer mekanizmaları kullanarak benzersiz Zorlanmış olmalıdır.The ROWGUIDCOL property is primarily used by Microsoft SQL Server replication.Çoğaltma ve işlem çoğaltması olan abonelikler kullanımı güncelleştiriliyor uniqueidentifier satırları birden çok tablo kopyasını benzersiz olarak tanıtılır emin olmak için sütunlar'ı tıklatın.
The uniqueidentifier data type has the following disadvantages:
Uzun ve karıştırılmış değerlerdir.Bu bunları kullanıcıların doğru yazın ve anımsanması kullanıcılar için daha zor hale getirir.
Değerleri, rasgele ve bunları daha anlamlı kullanıcılar yapabilir herhangi bir desen kabul edemiyor.
Hangi sırayla belirlemek için bir yol uniqueidentifier değerleri oluşturuldu. Bunlar seri olarak anahtar değerleri artan bağımlı varolan uygulamalar için uygun değil.
16 Baytın AT uniqueidentifier veri türü, diğer veri türlerini (örneğin, 4 baytlık tamsayı daha büyük olur. Yani, kullanılarak yüklenen dizinler uniqueidentifier anahtarlar kullanarak dizinleri oldukça yavaş olabilir bir int Anahtar.
Genel, benzersizliği istenmez veya ne zaman bir seri olarak artan anahtar olması yeğlenir KIMLIK özellik'ni kullanmayı deneyin.