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



我想复制一个sqlserver表的行并插入到这个表中,这个表有以下字段:

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的方法

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

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

请告诉我如何实现这个功能?

如果你对我的情况有其他的解决办法,请告诉我

致意。吉姆

GUID是一个(全局唯一标识符),它不像AutoId,你可以只增加1。

GUID应该是唯一周期。wiki

可以使用NEWID()在SQL中生成新的GUID

如果你想要一些概念的"序列"使用NEWSEQUENTIALID()

NEWSEQUENTIALID是Windows uidcreatesequential函数的包装。

但是,没有RAND这样的"种子"功能。

所以你的SQL变成了…

Select NEWID() ...

新建一个:

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

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

相关内容

  • 没有找到相关文章

最新更新