我想將數據複製到新的數據庫。然而,另一個表格包含在應該放置數據的過程中。在存儲(插入)兩個數據時從一個表中選擇數據?
舊錶:
DB1
。dbo
。pages
(ID,標題,內容)
新表(S):
DB2
。dbo
。Page
(id)
DB2
。dbo
。Content
(ID,的pageid,標題,內容)
如何從pages
選擇所有數據,而分割/它存儲在Page
和Content
?
我想將數據複製到新的數據庫。然而,另一個表格包含在應該放置數據的過程中。在存儲(插入)兩個數據時從一個表中選擇數據?
舊錶:
DB1
。dbo
。pages
(ID,標題,內容)
新表(S):
DB2
。dbo
。Page
(id)
DB2
。dbo
。Content
(ID,的pageid,標題,內容)
如何從pages
選擇所有數據,而分割/它存儲在Page
和Content
?
什麼是pageid?是從頁面的ID?
如果是這樣,這假設ID在內容表是一個身份
insert into DB2.dbo.Page (id)
select id from DB1.dbo.pages
insert into DB2.dbo.Content(pageid, title, content)
select id, title, content from DB1.dbo.pages
還是有點不解這個設計
謝謝,這實際上是一個很好的解決方案,我的問題!要解謎:多語言網頁... – Ropstah 2010-01-19 20:53:34
不可能直接。如果你的選擇很貴,你可以考慮將它插入臨時表中,然後插入到事務中的最終表中。
廣東話U帶兩個獨立的要求去做呢?不喜歡它:
插入db2.dbo.page 選擇ID從db1.dbo.pages
和:
插入db2.dbo.content(id_page,標題,內容) 選擇ID,標題,內容從db1.dbo.pages
我想這應該工作。
是有可能chain two inserts使用OUTPUT子句:
設置:
create table Page (id int)
create table Content (id int , pageid int, title varchar(100), content varchar(max))
create table pages (id int, title varchar(100), content varchar(max))
insert into pages values (1, 'Lorem', 'Ipsum');
insert into pages values (2, 'eum', 'aliquam vivendo placerat ad');
實際插入:
insert into Content (id, pageid, title, content)
output inserted.pageid into Page(id)
select id, id, title, content from pages;
證明:
select * from Page;
select * from Content;
氏s實際上可能是有用的,因爲兩個插入內部是在一個語句中,因此它們被自動包含在一個隱式事務中。
我很喜歡它 – Ropstah 2010-01-20 14:11:33
爲什麼在一個查詢中執行SELECT和INSERT很重要?你有沒有考慮使用交易? – Dor 2010-01-19 20:50:34
只是好奇...爲什麼你只有一張桌子只有一個ID? – 2010-01-19 20:52:13
兩個查詢也是可能的:),如果不清楚,很抱歉。這是一次性操作... – Ropstah 2010-01-19 20:52:55