找回密码
 立即注册

QQ登录

只需一步,快速开始

平底锅

高级会员

17

主题

21

帖子

1327

积分

高级会员

积分
1327

活字格认证

平底锅
高级会员   /  发表于:2010-9-26 15:53  /   查看:5767  /  回复:0
在SQL2008上利用NewID()可以返回uniqueidentifier,但返回的值是不确定的。
现在用户想在Table上,利用uniqueidentifier字段,自动生成一个从小到大的GUID(注:和数据类型的Identity一样)。

利用NEWSEQUENTIALID()新生成的值大于上一次生成的值,就可实现用户的要求。
注意: 该函数不能在查询中直接调用,只能在CREATE TABLE 语句或ALTER TABLE 语句中'uniqueidentifier' 类型的列的DEFAULT 表达式中使用。


Use AdventureWorks
GO

IF OBJECT_ID('GUID_SORT_TABLEA') IS NOT NULL
DROP TABLE GUID_SORT_TABLEA
GO

CREATE TABLE GUID_SORT_TABLEA(
ID  uniqueidentifier  default NEWSEQUENTIALID(),
Code1   nvarchar(10),
Order1  smallint)
GO

INSERT INTO GUID_SORT_TABLEA(Code1,Order1) values ('1-001',1), ('1-002',2), ('2-001',5), ('2-002',6), ('1-003',3), ('1-004',4);
GO


SELECT * FROM GUID_SORT_TABLEA
---------------------------------------------------------------------------------
ID                                                              Code1  Order1
---------------------------------------------------------------------------------
072501A9-42C9-DF11-86D9-005056C00008 1-001    1
082501A9-42C9-DF11-86D9-005056C00008 1-002    2
092501A9-42C9-DF11-86D9-005056C00008 2-001    5
0A2501A9-42C9-DF11-86D9-005056C00008 2-002    6
0B2501A9-42C9-DF11-86D9-005056C00008 1-003    3
0C2501A9-42C9-DF11-86D9-005056C00008 1-004    4
---------------------------------------------------------------------------------
注:ID是从小到大的顺序排列的。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部