我有两个表 TARGET 和 SOURCE。我需要更新 SOURCE 表的行并将这些更新的行插入到 TARGET 表中,然后从 SOURCE 中删除原始行。目前我首先通过 SP 完全更新 SOURCE 表,然后在另一个 SP 中执行移动操作。
BEGIN P1:
insert into TARGET(select * from SOURCE where col=someValue)
delete from SOURCE where col=someValue;
END P1
我也尝试过类似的东西
insert into TARGET(SELECT * FROM OLD TABLE(DELETE FROM SOURCE WHERE col=someValue))
但这在 SP 中不起作用。
我认为这是常见的场景,例如历史/存档表,并且必须在 DB2 中有解决方案。谁能告诉我如何在不影响性能的情况下实现这一目标?我的意思是SP不应该花很长时间来运行。我也可以删除多余的更新 SP。相反,我可以直接将更新的行插入 TARGET 并从 SOURCE 中删除相应的行吗?此外,我被建议在单个事务中进行删除和插入操作。这会导致任何性能损失吗?