目前,我可以向你提出這個建議。 我想我們可以找到沒有臨時表的另一種方法。 但現在應該做這項工作。
with prices as
(
select
id = row_number() over(),
P_ID
from PRICE_TABLE
),
facts as
(
select
id = row_number() over()
-- facts fieds you want
from FACT_TABLE
)
select
P_ID = prices.P_ID
-- facts fieds you want
into #facts
from facts
join prices on prices.id = facts.id
delete FACT_TABLE
insert FACT_TABLE
(
P_ID
-- facts fieds you want
)
select
P_ID
-- facts fieds you want
from #facts
drop table #facts
您可能要取消對FACT_TABLE.P_ID約束,如果我沒有理解很好地使用這個腳本
,你FACT_TABLE只包含您P_ID,這來自PRICE_TABLE。 爲什麼需要直接使用此FACT_TABLE而不是PRICE_TABLE? 爲什麼不使用insert/select創建FACT_TABLE而不是嘗試更新FACT_TABLE的P_ID字段?
有沒有規定'FACT_TABLE'應該更新哪個記錄,例如'P_ID = 1'而不是'P_ID = 2'? –
唯一的約束是來自'PRICE_TABLE'的ID全部進入'FACT'並按順序排列。到目前爲止,我所擁有的第一個ID是來自'PRICE..'的第一個ID,它填充了'FACT'中的所有值。' – eggman
'FACT_TABLE'中的哪個字段定義了順序? –