標籤:
| SqlServer中的資料類型UniqueIdentifier究竟是什麼東東? |
該類型一般用來做為主鍵使用,可用SQL文法的newid()來產生一個唯一的值。 我想請問的是,這個值是一個長整型的資料值呢,還是個其他的什麼值?我在程式中該怎樣去控制他? 歡迎多多交流。
|
| |
| |
| |
摘自協助:
uniqueidentifier 通用唯一識別碼 (GUID)。
凝視 uniqueidentifier 資料類型的列或局部變數可用兩種方法初始化為一個值:
使用 NEWID 函數。
將字串常量轉換為例如以下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,當中每一個 x 是 0-9 或 a-f 範圍內的一個十六進位的數字)。比如,6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效 uniqueidentifier 值。 比較運算子可與 uniqueidentifier 值一起使用。然而,排列並非通過比較兩個值的位元模式來實現。同意對 uniqueidentifier 值啟動並執行操作僅僅有比較 (=, <>, <, >, <=, >=) 和檢查 NULL(IS NULL 和 IS NOT NULL)。不同意使用其他算術運算子。全部的列約束及屬性(IDENTITY 除外)均同意用於 uniqueidentifier 資料類型。
使用 uniqueidentifier 資料 uniqueidentifier 資料類型儲存 16 位元組的二進位值,該值的使用與通用唯一識別碼 (GUID) 一樣。GUID 是一個唯一的位元字;世界上的不論什麼兩台電腦都不會產生反覆的 GUID 值。GUID 主要用於在擁有多個節點、多台電腦的網路中,分配必須具有唯一性的標識符。
uniqueidentifier 列的 GUID 值通常由下面方式獲得:
在 Transact-SQL 語句、批處理或指令碼中調用 NEWID 函數。
在應用程式代碼中,調用返回 GUID 值的應用程式 API 函數或方法。 Transact-SQL NEWID 函數以及應用程式 API 函數和方法從它們網卡上的標識數字以及 CPU 時鐘的唯一數字產生新的 uniqueidentifier 值。每一個網卡都有唯一的標識號。由 NEWID 返回的 uniqueidentifier 使用server上的網卡產生。由應用程式 API 函數和方法返回的 uniqueidentifier 使用客戶機上的網卡產生。
一般不將 uniqueidentifier 定義為常量,由於非常難保證實際建立的 uniqueidentifier 具有唯一性。指定 uniqueidentifier 常量的方法有兩種:
字串格式 ‘6F9619FF-8B86-D011-B42D-00C04FC964FF‘
二進位格式 0xff19966f868b11d0b42d00c04fc964ff
uniqueidentifier 資料類型不象IDENTITY 屬性那樣為新插入的行自己主動產生新的ID。為了得到新的 uniqueidentifier 值,表必須具有一個指定 NEWID 函數的 DEFAULT 子句,或使用 NEWID 函數的 INSERT 語句:
CREATE TABLE MyUniqueTable (UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(), Characters VARCHAR(10) ) GO INSERT INTO MyUniqueTable(Characters) VALUES (‘abc‘) INSERT INTO MyUniqueTable VALUES (NEWID(), ‘def‘) GO
uniqueidentifier 列能夠包括多次出現的 uniqueidentifier 值,除非也對此列指定了 UNIQUE 或 PRIMARY KEY 約束。當有多行引用源表中的同一主鍵時,引用其他表的 uniqueidentifier 主鍵的外鍵列將包括多次出現的個別 uniqueidentifier 值。
一個表能夠有多個 uniqueidentifier 列。每一個表中能夠指定一個具有 ROWGUIDCOL 屬性的 uniqueidentifier 列。ROWGUIDCOL 屬性工作表明此列的 uniqueidentifier 值唯一地標識表中的行。可是,該屬性並沒有運行該唯一性。唯一性必須通過其他機制來運行,比方為列指定 PRIMARY KEY 約束。ROWGUIDCOL 屬性主要用於 SQL Server 複製。
uniqueidentifier 資料類型的主要長處是保證由 Transact-SQL NEWID 函數或應用程式 GUID 函數產生的值在全球是唯一的。
uniqueidentifier 資料類型的具有幾個缺點:
值長且難懂。這使使用者難以正確鍵入它們,並且更難記住。
這些值是隨機的,並且它們不能接受不論什麼使它們對使用者變得更有意義的模式。
沒有不論什麼方式能夠決定產生 uniqueidentifier 值的順序。它們不適用於那些依賴遞增的索引值的現有應用程式。
uniqueidentifier 資料類型具有 16 個位元組,與其他那些諸如 4 位元組的整數相比要相對大一些。這意味著使用 uniqueidentifier 鍵建立的索引可能會比使用 int 鍵實現的索引相對慢一些。 假設全域唯一性並非必須的,或者須要一個連續遞增的鍵,則能夠考慮使用 IDENTITY 屬性。
^_^
|
| |
| |
1。sql server協助裡面有具體的答案,自己尋找。 2。開啟協助 索引--輸入uniqueidentifier就可以。
|
| |
| |
uniqueidentifier是通用唯一識別碼 (GUID) NEWID()傳回型別為uniqueidentifier SQL SERVER線上說明中的範例: declare @myid uniqueidentifier set @myid=newid() print ‘Value of @myid is ‘+cast(@myid as varchar(255)) 每次執行以上程式返回不同的uniqueidentifier
|
SqlServer中的資料類型UniqueIdentifier