我有一个名为
我希望创建存储过程,将
例如,如果我在
我想创建新的Model行和10个项目的副本,应该如下所示:
我将把要复制的
有什么建议吗?
MODELS
的表,其中可以包含多个ITEMS
。 ITEMS
表是一个分层表,其在PARENT
列上进行自连接。根级别的项目将在PARENT
中具有Null
。项目可以深入到任何级别。create table MODELS (
MODELID int identity,
MODELNAME nvarchar(200) not null,
constraint PK_MODELS primary key (MODELID)
)
go
create table ITEMS (
ITEMID int identity,
MODELID int not null,
PARENT int null,
ITEMNUM nvarchar(20) not null,
constraint PK_ITEMS primary key (ITEMID)
)
go
alter table ITEMS
add constraint FK_ITEMS_MODEL foreign key (MODELID)
references MODELS (MODELID)
go
alter table ITEMS
add constraint FK_ITEMS_ITEMS foreign key (PARENT)
references ITEMS (ITEMID)
go
我希望创建存储过程,将
MODELS
表中的一行复制到新行,并且同时复制ITEMS
中的整个结构。例如,如果我在
ITEMS
中有以下内容:ITEMID MODELID PARENT ITEMNUM
1 1 Null A
2 1 Null B
3 1 Null C
4 1 1 A.A
5 1 2 B.B
6 1 4 A.A.A
7 1 4 A.A.B
8 1 3 C.A
9 1 3 C.B
10 1 9 C.B.A
我想创建新的Model行和10个项目的副本,应该如下所示:
ITEMID MODELID PARENT ITEMNUM
11 2 Null A
12 2 Null B
13 2 Null C
14 2 11 A.A
15 2 12 B.B
16 2 14 A.A.A
17 2 14 A.A.B
18 2 13 C.A
19 2 13 C.B
20 2 19 C.B.A
我将把要复制的
MODELID
作为参数传递给存储过程。棘手的部分是正确设置PARENT
列。我认为这需要递归完成。有什么建议吗?
hierarchyid
已经在 2005 年被添加了。 - Panagiotis Kanavos