在学习CS系统的时候,发现一个有趣的问题:CS系统中数据库设计与我们常用的方法有所不同,其中一条就是用uniqueidentifier类型的字段作为数据的全局唯一标识符。仔细查了一下SQL Server联机丛书,发现了如下说明:
这才明白CS系统里的那些xxxxxxxx
-
xxxx
-
xxxx
-
xxxx
-
xxxxxxxxxxxx样式的数据原来是这么回事,而且个人认为这种类型在数据安全方面应该表现的不错。
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 数据类型。
全局唯一标识符 (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 数据类型。