【发布时间】:2016-10-08 00:10:17
【问题描述】:
使用 Oracle DB,是否可以更新一个表并删除另一个表(匹配行)?
我尝试了各种形式的MERGE,但都得到了:
ORA-01446: 无法从具有 DISTINCT、GROUP BY 等的视图中选择 ROWID 或采样。
(可能是视图中UNION ALL引起的)
或
ORA-38106: 合并视图或带有 INSTEAD OF 触发器的视图不支持合并。
这(“连接视图”)表明以任何形式指定两个表对于MERGE 来说是不行的。对吗?
(使用单一语句的原因是:性能、一致性和清晰度)
我的 Oracle DB 版本为 11.2。
实际问题是这样的:
我们(图书馆)有一个 books 的(父)表和一个 content 的(子)表(每本书一个或零个,它有一个 FK books 表)。每年我们都会为每本超过 10 年的书运行一项工作(让我们简化条件,因为它与这里的问题无关)我们将一个名为 RETIRED 的列设置为 books 中的值“YES” em> 表并删除 content 表中的行(如果存在)。
PS:欢迎使用 PL/SQL 解决方案。 (无论如何,我的代码都在 PL/SQL 中)
【问题讨论】:
标签: sql database oracle oracle11g