0
我現在有這樣一個表:架構變化:轉換領域外鍵在不同的表
Stuff ---------- StuffId identity int not null Description nvarchar(4000) null ...
我要存儲在一個單獨的表的說明,我已經撥出專門爲生成用戶內容:
Content ---------- ContentId identity int not null Content nvarchar(max) not null ...
(該表已經存在,以及其他表已經在它的參考條目。)
所以我需要:
- 使用外鍵約束在Stuff表上創建DescriptionContentId字段。
- 將當前的描述內容複製到內容表中。
- 設置每個DescriptionContentId以具有在步驟2中插入值時自動生成的ContentId值。
- 刪除Description列。
我知道如何做第1步和第4步,但第2步和第3步都在逃避我,因爲它們需要幾乎同時完成。這似乎是一個相當常見的模式變化。什麼是最好的方式來做到這一點?
更新
我更近了一步得益於輸出關鍵字,但我仍然失去了一些東西。這是我想做什麼:
create table #tmp (StuffId int, ContentId int)
insert into Content(Content)
output s.StuffId, inserted.ContentId
into #tmp(StuffId, ContentId)
select Description
from Stuff s
where Description IS NOT NULL
但我不能引用s.StuffId,因爲它不是插入內容表中的字段之一。當我爲每個Stuff條目插入一個新的內容項目時,如何關聯Stuff的ID和內容的ID?
優秀。看起來這是我失蹤的關鍵。我會努力工作,並讓你知道它是否有效。 – StriplingWarrior 2011-02-25 22:53:37
不幸的是,我仍然被阻止。請參閱我的更新。 – StriplingWarrior 2011-02-25 23:09:49
您必須暫時將stuffid添加到內容表中才能進行轉換。見上文第3段。是的,就是這樣。 – HLGEM 2011-02-28 14:41:52