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() --赋值