我想复制一个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
这样的算法