我熟悉oracle的MERGE
语句,该语句通常用于UPDATE ELSE INSERT。
我的问题是,是否可以用它来更新 +插入日志表?
我想监视已更新的所有记录,因此我需要将它们保存在日志表中。因此,我不想再从两个巨大的表中进行选择,而是想在INSERT
子句中放置另一个WHEN MATCHED
语句。
所以它会是这样的:
MERGE INTO tableA A
using TableB b
ON (a.Col = b.Col)
WHEN MATCHED THEN UPDATE SET A.col2 = b.col2
INSERT INTO tableA_Log (key,col)
VALUES (a.Key,b.col2) ;
这可能吗?或者我必须再次从两个表中获得另一个查询(500mil记录和40mil记录)。
提前致谢。
答案 0 :(得分:3)
这可能吗?
不,在单个 MERGE 语句中无法实现。
来自documentation, MERGE:
的定义使用MERGE语句从一个或多个来源中选择行进行更新或将插入表格或视图。
这意味着您可以从多个源表中选择行,但一次只更新或插入一个表,即。要合并的表。
您可以在表上创建更新后触发器,以便在基表中更新行时将行插入到日志表中。