uniqueidentifier數據類型的簡介
uniqueidentifier數據類型可存儲16字節的二進制值,其作用與全局唯一標記符(GUID)一樣。GUID是唯一的二進制數:世界上的任何兩臺計算機都不會生成重復的GUID值。GUID主要用于在用于多個節點,多臺計算機的網絡中,分配必須具有唯一性的標識符。 在SQL中 ROWGUIDCOL表示新列是行的全局唯一標識列。對于每個表只能指派一個uniqueidentifier 列作為ROWGUIDCO列。ROWGUIDCOL屬性只能指派給uniqueidentifier列
怎樣給uniqueidentifier類型賦值
uniqueidentifier數據類型是全局唯一的標識與全局唯一標記符(GUID)一樣,可存儲16字節的二進制值。賦值一般用newid()賦值
例如:
declare @id uniqueidentifier --聲明sql變量
SET @id= NEWID() --賦值
為什么有主鍵ID了,還要用uniqueidentifier
您好:
uniqueidentifier是不會重復的。
通常在分布式架構使用,以免各個終端的數據重復。
比如超市的各個收銀機數據匯總結算等。
如果只是單個終端的話,自增主鍵就可以滿足實際需要了。
數據庫里字段是uniqueidentifier類型的,怎么操作
SQL Server為我們提供了UniqueIdentifier數據類型,并提供了一個生成函數NEWID( ),使用NEWID( )可以生成一個唯一的UniqueIdentifier。UniqueIdentifier在數據庫中占用16個字節,出現重復的概率非常小,以至于可以認為是0。我們經常從注冊表中看到類似
{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}
的東西實際上就是一個UniqueIdentifier,Windows用它來做COM組件以及接口的標識,防止出現重復。在.NET里管UniqueIdentifier稱之為GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一個GUID:
Guid u = System.Guid.NewGuid();
對于上面提到的Order與OrderDetail的程序,如果選用UniqueIdentifier作為主鍵的話,我們完全可以避免上面提到的增加網絡RoundTrip的問題。通過程序直接生成GUID填充主鍵,不用考慮是否會出現重復。
UniqueIdentifier字段也存在嚴重的缺陷:首先,它的長度是16字節,是整數的4倍長,會占用大量存儲空間。更為嚴重的是,UniqueIdentifier的生成毫無規律可言,要想在上面建立索引(絕大多數數據庫在主鍵上都有索引)是一個非常耗時的操作。有人做過實驗,插入同樣的數據量,使用UniqueIdentifier型數據做主鍵要比使用Integer型數據慢,所以,出于效率考慮,盡可能避免使用UniqueIdentifier型數據庫作為主鍵鍵值。
SQL語句報錯uniqueidentifier 與 float 不兼容
uniqueidentifier數據類型可存儲16字節的二進制值,其作用與全局唯一標記符(GUID)一樣。GUID是唯一的二進制數:世界上的任何兩臺計算機都不會生成重復的GUID值。
所以uniqueidentifier和float類型不是同一種數值類型。檢查一下你兩個數據表,找到uniqueidentifier列,修改一下你的sql語句。
如何使用SQL的UNIQUEIDENTIFIER數據類型
uniqueidentifier數據類型是全局唯一的標識,可存儲16字節的二進制值。賦值一般用newid()賦值,
例如:
declare @id uniqueidentifier --聲明sql變量
SET @id= NEWID() --賦值