Oracle DB表与视图的关系(物化视图)

Posted

技术标签:

【中文标题】Oracle DB表与视图的关系(物化视图)【英文标题】:Oracle DB relationship between table and view(materialized view) 【发布时间】:2015-02-11 10:05:39 【问题描述】:

如何在表和视图之间创建引用?我有一个视图,它由通过 UNION 创建的两个表组成(这些表的 ID 是相同序列器的唯一原因)。 我尝试在视图中创建主键并进行参考,但它对我不起作用?是否有可能使它像那样或物化视图。它的遗留项目具有真正的大数据模型和大量视图。

【问题讨论】:

【参考方案1】:

您不能在视图中使用键。这意味着

不能在视图中设置主键 您不能在外键中引用视图

【讨论】:

【参考方案2】:

根据 oracle 文档。您可以在视图上创建 PK(已禁用、未验证),但 FK 无法引用此 PK,因为它未经过验证

Oracle 数据库不强制执行视图约束。但是,您可以通过对基表的约束来强制对视图进行约束。

您只能指定唯一、主键和外键约束 在视图上,它们仅在 DISABLE NOVALIDATE 模式下受支持。你 无法在对象列的属性上定义视图约束。

来自http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#SQLRF52163

【讨论】:

是的,主键处于禁用状态,但是是否有可能创建从表到物化视图的引用,因为我的同事告诉我这是可能的。 @Milkmaid:如果 PK 未经过验证,您将无法对该 PK 进行 FK 引用,因为约束应该是有效的

以上是关于Oracle DB表与视图的关系(物化视图)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11x 中增量刷新的物化视图和相应的主表日志

pgsql怎么改表名不影响物化视图

PG 物化视图

Oracle 物化视图与 JPA 查询

oracle物化视图不会自动更新是怎么回事

Oracle物化视图