在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是从小到大的顺序排列的。 |
|