我想复制一个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 .....
}
请帮助我如何实现此功能?
如果您对我的情况有其他解决方案,请告诉我
问候。
吉姆
答案 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
这样的算法。