从 Oracle 视图插入表

Posted

技术标签:

【中文标题】从 Oracle 视图插入表【英文标题】:Inserting into Table from Oracle View 【发布时间】:2016-01-28 13:12:57 【问题描述】:

我有一个动态返回来自不同表的值的视图。 每当视图添加或减少数据时,我都需要从该视图中插入或删除某个表。 我应该使用存储过程还是类似的东西

【问题讨论】:

这个问题和Delphi完全没有关系,所以我把标签去掉了。这是一个严格意义上的 Oracle SQL 问题。 “每当视图添加或减少数据时”是什么意思?您能否提供一些用例,您如何使用它? 看来您需要Materialized View。 视图只是对表的固定查询,它不物理存储数据。您要么需要使用物化视图,要么在视图查询的基础表上使用触发器解决方案,以识别视图内容何时发生变化。 这可能会有所帮助***.com/questions/1652995/… 【参考方案1】:

正如@MichaelBroughton 已经说过的,视图不会物理存储数据,并且视图不知道其基础数据何时发生变化。

我建议您考虑在基表上创建触发器并让这些触发器处理目标表的更新。如果适用于您的上下文,您当然可以有多个触发器,它们都执行完成数据传播的相同存储过程。

矩阵化视图也可以是一种解决方案,因为您可以简单地在该视图上创建触发器,但代价是实际存储视图提供的所有数据。

【讨论】:

以上是关于从 Oracle 视图插入表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle:在可更新视图上插入

Oracle MERGE语句

oracle 修改表结构或修改视图时很慢,直接让PLSQL卡死,不知道是啥原因? 重启oracle 服务却又可以了!

oracle基表更新普通视图是不是更新

H2:如何从 Oracle 视图创建链接表?

oracle