Oracle - FORCE 视图选项在执行后不显示在视图中
Posted
技术标签:
【中文标题】Oracle - FORCE 视图选项在执行后不显示在视图中【英文标题】:Oracle - FORCE view option isn't shown on view after executed 【发布时间】: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
选项仅在执行时没有运行时影响?它是否仅用于强制覆盖先前的视图(即使出现错误)?
【问题讨论】:
【参考方案1】:是否只在执行时使用 FORCE 选项而没有运行时影响?
是的。如果视图语句无效——比如说有一个错字并且 FROM 子句中的表名拼写错误——通常 Oracle 不会创建视图。通过使用 FORCE 关键字,可以创建视图,但具有'INVALID'
状态。这在某些情况下可能很有用,例如我们有一个构建工具,如果语句失败,它会停止运行,但我们希望整个构建完成,然后解决任何不一致。
是否只用于强制覆盖之前的视图
没有。即使视图在此之前不存在,我们也可以选择使用 FORCE。当我们 ALTER a TYPE with dependencies 时,用法与使用 FORCE 略有不同。我们总是可以创建或替换视图。
【讨论】:
以上是关于Oracle - FORCE 视图选项在执行后不显示在视图中的主要内容,如果未能解决你的问题,请参考以下文章