如何从C#或T-Sql中的给定GUID生成新的GUID?

时间:2011-07-14 09:54:32

标签: c# sql guid uniqueidentifier

我想复制一个sqlserver表行并插入这个表self,这个表有这个字段:

Id :uniqueidentifier
ParentId: uniqueidentifier
Name: varchar(50)
Sort: float
UserId: uniqueidentifier

Id和ParentId现有关系。

我想出了一个解决方案:

Insert into table1 (Id, ParentId,Name,Sort)
Select dbo.gen(id,1) as id, dbo.gen(ParentId,1) as ParentId ,Name,Sort from table1 
where UserId='XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

gen函数是从给定GUID生成新GUID的方法

follow是一个C#描述,我们可以在CLR SQL Server用户定义函数中使用:

public Guid GenerateNewGuid(Guid from,int seed)
{
    return .....
}

请帮助我如何实现此功能?

如果您对我的情况有其他解决方案,请告诉我

问候。

吉姆

3 个答案:

答案 0 :(得分:5)

GUID是一个(全球唯一标识符),它不像AutoId,只能增加1。

GUID意味着唯一时期。 wiki

答案 1 :(得分:1)

您可以使用NEWID()

在SQL中生成新的GUID

如果您想要“序列”的某些概念,请使用NEWSEQUENTIALID()

  

NEWSEQUENTIALID是Windows UuidCreateSequential函数的包装器。

然而,没有像兰德这样的“种子”盛宴。

所以你的SQL变成......

Select NEWID() ...

答案 2 :(得分:0)

只需创建一个新的:

public Guid GenerateNewGuid()
{
    return Guid.NewGuid();
}

没有订购Guids或类似的东西。没有像newGuid = oldGuid + 1这样的算法。