2

我正在使用 sql-server 2008。

我有 3 张桌子:

Item
  - Id
  - Name

ItemLink
  - Id
  - FkParentItemId
  - FkChildItemId

Item2
  - Id
  - FkItemId
  - Name

关系是:

ItemLink >- Item -< item2
         >-

我现在意识到我犯了一个错误,需要将数据从“Item2”传输到“Item”,但通过插入 ItemLink 记录来创建层次结构。我不想就这种方法的利弊展开辩论,只是补充一点,“Item2”需要“Item”之外的常用表格

所以我需要注意执行此操作所需的插入 ddl。我相信它会是这样的:

Insert into Item(Name) select(Item2.Name) from Item2
Insert into ItemLink(FkParentItemId,FkChildItemId) select (Item2.FkItemId, New ItemId ??)

对此有点生疏,因此需要帮助。

提前谢谢了。

4

1 回答 1

1

好的,所以我在这里做一些假设。

我假设表 Item2 中的值将保留。

 insert into item (name)
 select Name from item2

这个中间部分我不清楚。不知何故,您需要将 Fk 更新为 Item 表。

 update item2
 set FkItemId = id
 from item2 inner join item 
 on item.name = item2.name

填充 ItemLink

 insert into ItemLink ( PkParent, PkChild)
 select item.id, item2.id
 from item2 inner join item 
 on item.id = item2.FkItemId
于 2013-10-06T00:27:50.203 回答