uniqueidentifier数据类型详解,全球唯一标识GUID

 百家乐概况     |      2020-05-07 04:26

uniqueidentifier数据类型可存款和储蓄16字节的二进制值,其效果与大局独一标识符雷同。GUID是并世无两的二进制数:世界上的其他两台微型机都不会扭转重复的GUID值。

GUID(Global unique identifier)全局独一标记符,它是由网卡上的标记数字(各样网卡都有独一的标志号卡塔尔(قطر‎以至CPU 挂钟的必定要经过之处数字生成的的叁个 16 字节的二进制值。

在SQL中 ROWGUIDCOL表示新列是行的大局独一标志列。对于各个表只可以支使贰个uniqueidentifier 列作为ROWGUIDCO列。ROWGUIDCOL属性只可以支使给uniqueidentifier列

GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,个中每一个 x 是 0-9 或 a-f 范围内的叁个十四进制的数字。比方:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为可行的 GUID 值。

uniqueidentifier数据类型的赋值方法:

世界上的别的两台Computer都不会转移重复的 GUID 值。GUID 首要用以在具备多少个节点、多台Computer的网络或系统中,分配必需具备独一性的标志符。在 Windows 平台上,GUID 应用特别分布:注册表、类及接口标记、数据库、以致自动生成的机器名、目录名等。

1.接纳NewID(卡塔尔函数来落实

在本次支付 ASP.NET 应用时,作者大方施用了种类为 GUID 的 ID 列作为各实体表的非常重要字(键State of Qatar。由于其唯一、易发生的风味,给应用程序管理带给超多益处。

2.一直将字符串的常量转变为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

1、在 SQL Server 中使用 GUID

例如:6F9619FF-8B86-D011-B42D-00C04FC964FF

要是在 SQL Server 的表定义上将列类型钦命为 uniqueidentifier,则列的值就为 GUID 类型。

3.直接予以三十四位的16个人数据

SQL Server 中的 NewID(卡塔尔(قطر‎ 函数能够产生 GUID 独一值,使用此函数的三种办法如下:

例如:0xffffffff00000000ffffffff00000000

1卡塔尔 作为列暗许值

其它

将 uniqueidentifier 的列的暗中认可值设为 NewID(State of Qatar,那样当新行插入表中时,会自动生成此列 GUID 值。

在SQL Server 二〇〇六中有四个数据类型uniqueidentifier,这几个数据类型便是用来扶助GUID(Global Unique IdentifierState of Qatar。这些类其他值是一个长度为32的定长字符串,例如00000002-3378-a87f-92pj-2t68i97o34ms。GUID能够确定保证该ID的大局唯一性,方便数据库整合,避防因为数量交互作用Copy甚至倒车进程中因为ID相像引起不供给的冲突。在C#中有Guid类,方便大家转移和操作GUID。比方Guid.NewGuid.ToString(State of Qatar就足以收获多个新的GUID字符串。其实,GUID本质上得以以为是岁月戳的MD5 Hash。在Lotus中,每种Document都有二个大局的独一标记称作UNID(unique identifier卡塔尔。这么些UNID和上述GUID有着相符的编写制定。作者在近日的体系中就成功了莲花小车文档数据库向SQL Server 关周全据库转变的专门的学问。涉及了比很多的GUID和UNID的操作。在SQL Server 2006中,uniquidentifier类型值总是能够用casting转变为定长的varchar类型。

2)使用 T-SQL

在 T-SQL 中运用 NewID(卡塔尔(قطر‎函数,如“INSERT INTO Table(ID,... 卡塔尔VALUES(NewID(卡塔尔国,...卡塔尔”来生成此列的 GUID 值。

3卡塔尔国提前获得 GUID 值

由于非常作用需求,须要事情发生以前获悉新行的 ID 值,也足以行使如下 C# 代码提前收获 GUID 的值,再囤积到数据库中:

SqlCommand cmd = New SqlCommand();
cmd.CommandText = "SELECT NewID()";
string rowID = (string) cmd.ExecuteScalar();
cmd.CommandText = "INSERT INTO Table(ID,...) VALUES(@ID,...)
cmd.Parameters.Add("@ID",SqlDbType.UniqueIdentifier).Value = new Guid(rowID);
cmd.ExecuteNoQuery();

uniqueidentifier 值无法开展算术运算,但能够张开(意义十分小的State of Qatar相比较操作和 NULL 检查;它不能够象 IDENTITY 列雷同,能够得悉每行的加多时间的前后相继顺序,只可以通过扩充别的时间或时间戳列来实现此成效。

2、在 .NET 中使用 GUID

GUID 在 .NET 中采用十二分平淡无奇,并且 .NET Framework 提供了非常 Guid 根底布局。