目前,我可以向你提出这个建议。 我想我们可以找到没有临时表的另一种方法。 但现在应该做这项工作。
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'中的哪个字段定义了顺序? –