是否可以使用Oracle中的merge
函数修改多个表?
在每种情况下,都需要采取不同的操作,例如:
MERGE INTO users tab1
USING(SELECT 1 id, 10 points FROM dual) tab2
ON(tab1.id = tab2.id )
WHEN MATCHED THEN
UPDATE SET points = tab2.points
UPDATE "abc" = action.status -- another table
WHEN NOT MATCHED THEN
INSERT(id, points) VALUES(tab2.id, tab2.points)
UPDATE "def" = action.status -- another table
答案 0 :(得分:8)
根据文档,简单的答案是否定的。 The syntax支持一个表或视图。但是,使用可更新的视图,您可以完成多表插入/更新。
然而,你的例子似乎试图做一些你不能做的事情。 WHEN MATCHED子句指定要更新的内容。你不能从这个子句中插入。 WHEN NOT MATCHED子句也是一样 - 你不能从这个子句UPDATE,只能INSERT。