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 |
轉載于:https://www.cnblogs.com/mengfanrong/p/4351537.html