sql - 合并: modifying multiple tables

标签 sql oracle

是否可以使用 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

最佳答案

根据文档,简单的答案是否定的。 The syntax支持一张表或 View 。但是,使用可更新 View ,您可以完成多表插入/更新。

但是,您的示例似乎试图做一些您无法做的事情。 WHEN MATCHED 子句指定要更新的内容。您不能从此子句中插入。对于 WHEN NOT MATCHED 子句也是如此 - 您不能从此子句更新,只能插入。

关于sql - 合并: modifying multiple tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10590325/

相关文章:

database - 获取 ORA - 01653 : Unable to extend table even in case of unlimited quota

java - 逆向工程 JDBC Oracle 连接字符串

mysql - 通过消除表中的重复项来显示序列号(rownum)以及 mysql 中的数据?

php - SQL从表中选择并获取表名

sql - redshift 正则表达式获得多个匹配项并扩展行

SQL 查询 : Facing issues to get desired records from different tables

带有 IN 子句参数的 Oracle 存储过程

mysql - 将日期和时间格式化为 MySQL 默认格式

mysql - 如何最好地构建此数据库查询?

oracle - SQL加载器安装