精华内容
下载资源
问答
  • UniqueIdentifier 数据类型 和 GUID 生成函数 原文:UniqueIdentifier 数据类型 和 GUID 生成函数UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte。SQL Server将UniqueIdentifier存储为16字节...
    原文: UniqueIdentifier 数据类型 和 GUID 生成函数

    UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte。 SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格式显示,显示的格式是:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中,x是16进制数字,数值范围是从0-9,A-F。由于每个字节存储2个16进制数据,因此,按照存储字节,UniqueIdentifier的格式简写为:4B-2B-2B-2B-6B。使用GUID的好处是:在不同的Server上,实现GUID数值的“唯一”,SQL Server保证GUID的值总是唯一的,只在极少数情况下可能会重复。

    在SQL Server中,UniqueIdentifier 列的特性:

    • 系统不会自动为UniqueIdentifier列赋值,必须显式赋值;
    • 使用GUID产生函数 NewID()赋值,产生随机的GUID;
    • NewSequentialID() 函数只能用于表列的Default约束中,产生顺序的GUID;
    • 使用字符串常量赋值,字符串常量的格式是:'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',x是16进制数字,数值范围是从0-9,A-F;
    • UniqueIdentifier 值能够比较大小,能够使用is null 或 is not null 操作符判断是否为NULL;
    • 能够被RowGUIDCol属性标记,使用$ROWGUID 引用具有RowGUIDCol属性的UniqueIdentifier列;

    一,对UniqueIdentifier 变量赋值

    1,使用NewID() 为UniqueIdentifier赋值,函数NewID() 用于产生随机的GUID数值。

    declare @ui uniqueidentifier
    set @ui=newid()
    select @ui

    2,使用字符串赋值,字符串的格式是:‘xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx’

    declare @ui uniqueidentifier
    set @ui='AA786048-44BB-E511-80E3-F8B156CF6E62'
    select @ui

    二,创建UniqueIdentifier column

    由于UniqueIdentifier 列不是由系统自动赋值,必须显式赋值,可以为UniqueIdentifier列创建Default约束,并使用GUID产生函数赋值。

    例如,在Default约束中使用NewID(),为每行数据生成随机的唯一值

    CREATE TABLE dbo.myTable_Rand
    (
        ColumnA uniqueidentifier DEFAULT NewID(),
        ColumnB int,
        columnC varchar(10)
    ) 

    1,随机的GUID

    NewID()函数产生的GUID是唯一的,但是,值的大小是随机的,不是一个始终增加的值(ever-increasing value),SQL Sever 不保证产生的GUID比之前的GUID 大或小。如果将NewID()函数产生GUID作为clustered index key,那么新的数据行插入的位置是随机的,这样将导致Page split ,降低 IO 性能。

    最佳的clustered index key 应该是递增的(increase),data type is narrow (narrow),值是unique(unique),不会频繁更新(static),NewID() 产生的GUID满足narrow,unique, static,但是不满足increase,因此不是理想中的clustered index key。

    2,有序的GUID

    在一台指定的服务器上,NewSequentialId() 产生的GUID是有序的,后产生的GUID比先产生的GUID数值要大,也就是说,该函数产生的GUID值是始终增加(ever-increasing value)的,SQL Sever 保证产生的GUID比之前的GUID 大。NewSequentialID()函数只能用于表列的Default约束中。如果将NewSequentialID() 产生的GUID作为clustered index key,那么Insert会将新的row 将插入到table的末尾,避免 page split,推荐使用NewSequentialID()作为clustered index key。

    NewSequentialID()  Creates a GUID that is greater than any GUID previously generated by this function on a specified computer since Windows was started. After restarting Windows, the GUID can start again from a lower range, but is still globally unique. When a GUID column is used as a row identifier, using NEWSEQUENTIALID can be faster than using the NEWID function. This is because the NEWID function causes random activity and uses fewer cached data pages. Using NEWSEQUENTIALID also helps to completely fill the data and index pages.

    NEWSEQUENTIALID() can only be used with DEFAULT constraints on table columns of type uniqueidentifier. You can use NEWSEQUENTIALID to generate GUIDs to reduce page splits and random IO at the leaf level of indexes. Each GUID generated by using NEWSEQUENTIALID is unique on that computer.

    CREATE TABLE dbo.myTable 
    (
        ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID(), ColumnB int, columnC varchar(10) )  insert into dbo.myTable(ColumnB,columnC) values(1,'a'),(2,'c')

    三,ROWGUIDCOL 属性

    ROWGUIDCOL 属性用于标记一个表列是 UniqueIdentifier 列,如果一个表列被标记为RowGUIDCol,那么可以使用 $ROWGUID 来引用该列 ,一个表只能有一列具有RowGUIDCol属性,该属性仅有的作用是:指定 $ROWGUID 引用的UniqueIdentifier列。

    CREATE TABLE dbo.myTable_RowGUIDCol
    (
        ColumnA uniqueidentifier ROWGUIDCOL not null
                constraint DF__myTable_RowGUIDCol_ColumnA DEFAULT NewID(),
        ColumnB int,
        columnC varchar(10)
    ) 

    引用$ROWGUID查看被标记为RowGUIDCol 的column

    select $ROWGUID
    from dbo.myTable_RowGUIDCol

     

    参考文档:

    Uniqueidentifier vs. IDENTITY

    uniqueidentifier (Transact-SQL)

    NEWID (Transact-SQL)

    NEWSEQUENTIALID (Transact-SQL)

    posted on 2018-08-31 15:37 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/lonelyxmas/p/9566125.html

    展开全文
  • GUID生成

    千次阅读 2019-07-16 14:08:29
    GUID 来自百度: 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128...GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以...

    GUID


    来自百度:

    全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

    GUID一词有时也专指微软对UUID标准的实现。

    在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。


    可以通过百度得到其他C++、C#、Python等语言的实现方式。

    LabVIEW中很多地方也需要使用GUID,特别是在使用数据库进行数据存储时,使用GUID作为Index、ID等可以非常有效的规避ID重复等问题。

    最简单的方便是调用windows系统的GUID生成器:

    1、互连接口——》.net——》构造器节点

    2、选择程序集:mscorlib(4.0.0.0)——》System——》Guid()

    在实际项目中,用于ID类的使用。

    展开全文
  • 软件介绍: 本工具用于生成唯一的GUID值,可以置顶到所有页面。添加数据时可直接复制GUID到数据库中使用。软件功能比较简单,就是生成GUID数据,然后就是复制GUID
  • GUID生成方式

    2017-11-16 12:23:00
     在MS Sql 数据库中可以在建立表结构是指定字段类型为uniqueidentifier,并且其默认值可以使用NewID()来生成唯一的Guid(全局唯一标识符).使用NewID生成的比较随机,如果是SQL 2005可以使用NewSequentialid()来顺序...

    uniqueidentifier(Guid)字段

      在MS Sql 数据库中可以在建立表结构是指定字段类型为uniqueidentifier,并且其默认值可以使用NewID()来生成唯一的Guid(全局唯一标识符).使用NewID生成的比较随机,如果是SQL 2005可以使用NewSequentialid()来顺序生成,在此为了兼顾使用SQL 2000使用了NewID().

      Guid:指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,其算法是通过以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字生成。其格式为:04755396-9A29-4B8C-A38D-00042C1B9028.

      Guid的优点就是生成的id比较唯一,不管是导出数据还是做分步开发都不会出现问题.然而它生成的id比较长,占用的数据库空间也比较多,随着外存价格的下降,这个也无需考虑.另外Guid不便于记忆,在这方面不如自动增量字段,在作调试程序的时候不太方便。

     

     

    本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/06/05/1497149.html,如需转载请自行联系原作者

     

     

     

     

    展开全文
  • 修正powerdesigner无法为SQL SERVER2005、2008自动生成GUID数据类型的测试数据问题,解压后直接覆盖相关文件。 建立test data profile,进行相关设置即可自动生成GUID测试数据。 具体设置可参照博文:...
  • pgsql的guid生成函数

    千次阅读 2019-08-06 11:11:58
    oracle sys_guid()函数,在pgsql中无法使用。pgsql中有uuid_generate_v4()函数可以产生uuid,但无法直接使用,需要先安装扩展。pgsql的扩展SQL文件在share\extension目录下。 安装此扩展,windows系统,需要进入...

    oracle sys_guid()函数,在pgsql中无法使用。pgsql中有uuid_generate_v4()函数可以产生uuid,但无法直接使用,需要先安装扩展。pgsql的扩展SQL文件在share\extension目录下。

    安装此扩展,windows系统,需要进入命令行模式。

    运行psql --host=127.0.0.1 -username=postgres

    需要主机地址,端口,用户名和密码,输入正确后,出现提示符postgres-#:

    输入命令: create extension "uuid-ossp";    就可以执行此扩张sql的安装;

    然后执行: select uuid_generate_v4(); 查看是否生成了uuid.

     

    展开全文
  • GUID 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会...
  • C# VB6.0 Java C++ GUID 生成 编辑本段GUID概念  GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通...
  • 使用GUID作为数据表主键的好处 使用GUID作为数据表主键的好处 使用GUID作为数据表主键的好处 数据表主健... GUID与自动递增值及唯一名称比较GUID在客户端生成,由GUID的特性决定,通过GUID生成的值可能出现重复的机...
  • PB 生成GUID

    2018-08-19 10:11:57
    PB 11.5利用OLE生成GUID(全球唯一码)的Demo,在XP环境测试通过。
  • 生成唯一GUID工具

    2017-11-22 16:34:20
    本工具用于生成唯一GUID,可置顶到所有页面。添加数据时可直接复制GUID到数据库中
  • 工作中需要用到全球唯一标识符,在.net当中 微软...但事情往往没有那么容易一帆风顺,当别人设计的数据库ID类型为varchar(32)时,使用Guid.NewGuid().ToString()自动生成ID值,本来大小32位妥妥的。可C#在生成的ID...
  • Oracle 生成GUID

    2020-05-27 11:14:12
    采用Oracle自带的sys_guid()方法可以生成一个会产生一个跟MAC地址、生成时间相关的一个32位16进制的随机数。数据类型是 raw(16) 有32个字符; select sys_guid() from dual; 结果: 生成了一个含有大写字母的32位...
  • SqlServer实现 SELECT LOWER(LTRIM(RTRIM(REPLACE(NEWID(),'-',''))))NEWID()函数产生随机数,例如:F874153F-D99B-40A9-826B-D51948A33E22 REPLACE(NEWID(),'-','')去除横线 ...string guid = System.Guid.New
  • 用hibernate方式配置生成mysql guid数据,32位的,在eclipse下直接导入,运行即可
  • 使用GUID作为数据表主键的好处

    千次阅读 2012-06-12 17:14:46
    【使用GUID作为数据表主键的好处】 ...GUID和自动递增值及唯名称比较GUID在客户端生成由GUID特性决定通过GUID生成值可能出现重复机会几乎 等于零因此保证在插入表时候主键值唯 可以方便处理分布式数据提交比如
  • C# Guid随机数生成
  • 该公司使用自己的GUID格式非标准的GUID,如果有同学进入该公司或者需要与该公司产品交换数据,可以供参考。 C# using System; using System.Text; namespace PerformanceManageProject { public class ...
  • javascript生成guid

    千次阅读 2018-05-27 16:36:16
    javascript生成guid GUID:Globally Unique Identifer ,全局唯一标识符,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象 GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-...
  • ORACLE 生成GUID

    千次阅读 2019-09-02 15:46:33
    项目中若采用oracle数据库,则主键生成可以有两种方式,一是用sys_guid(),二是定义一个sequence,然后用nextval得到ID。 Oracle的定义sequence例子: create sequence seq_test minvalue 10000 maxvalue ...
  • .NET生成GUID

    千次阅读 2012-10-09 23:14:14
    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。...
  • c++生成GUID

    2021-04-16 17:07:32
    C++生成GUID码 .NET中生生成GUID(Globally Unique Identifier)比较简单 1 var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12 2 var uuidN = Guid.NewGuid().ToString(“N”); // e0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,863
精华内容 12,745
关键字:

guid生成的数据