【问题标题】:Oracle - FORCE view option isn't shown on view after executedOracle - FORCE 视图选项在执行后不显示在视图中
【发布时间】:2018-12-24 11:05:29
【问题描述】:

我们创建了一个用于处理复杂 SQL 的视图,但是在使用 FORCE 选项创建视图时。例如:

create or replace FORCE view testview as
select 1
from dual;

FORCE 在稍后查看视图时被删除

create or replace view testview as
select 1
from dual;

如果要创建视图,无论视图的基表或引用的对象类型是否存在,或者包含视图的架构的所有者是否对它们具有权限,请指定 FORCE。在针对视图发出任何 SELECT、INSERT、UPDATE 或 DELETE 语句之前,这些条件必须为真。

如果视图定义包含任何约束,如果基表不存在或引用的对象类型不存在,CREATE VIEW ... FORCE 将失败。如果视图定义命名了一个不存在的约束,CREATE VIEW ... FORCE 也会失败。

是否使用FORCE 选项仅在执行时没有运行时影响?它是否仅用于强制覆盖先前的视图(即使出现错误)?

【问题讨论】:

    标签: oracle view


    【解决方案1】:

    是否只在执行时使用 FORCE 选项而没有运行时影响?

    是的。如果视图语句无效——比如说有一个错字并且 FROM 子句中的表名拼写错误——通常 Oracle 不会创建视图。通过使用 FORCE 关键字,可以创建视图,但具有'INVALID' 状态。这在某些情况下可能很有用,例如我们有一个构建工具,如果语句失败,它会停止运行,但我们希望整个构建完成,然后解决任何不一致。

    是否只用于强制覆盖之前的视图

    没有。即使视图在此之前不存在,我们也可以选择使用 FORCE。当我们 ALTER a TYPE with dependencies 时,用法与使用 FORCE 略有不同。我们总是可以创建或替换视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      相关资源
      最近更新 更多