需要更新Oracle视图,但基表不存在

时间:2010-09-20 15:05:11

标签: oracle view

我正在尝试对oracle数据库上的视图进行极小的更改,但让我感到困惑的是我想要更改的视图的基表/视图似乎不存在。

首先我这样做了:

  

从all_views中选择文本,其中view_name ='(查看名称)';

并获得了视图文本,当然是这样的:

  

选择     (田)     FROM(表)

尝试单独运行此查询会返回错误,指出此表或视图不存在。搜索all_表上的表名和视图列表不会返回任何内容。使用相同的源select语句创建一个新视图告诉我我无法创建它因为表或视图不存在。现在,这是一个生产数据库,所以这应该工作,因为我可以使用现有的视图。我对oracle数据库没有多少经验,所以我可能在这里遗漏了一些东西。

5 个答案:

答案 0 :(得分:4)

我认为该视图位于另一个架构中。这是否与第一个查询的返回值相同:

select text from all_views where view_name='(view name)' and owner = user;

如果没有返回任何行,则需要查找视图的所有者:

select owner from all_views where view_name = '(view_name)';

将SQL更改为

select (fields) from (view_owner).(table);

答案 1 :(得分:1)

即使“FORCE”选项中没有基表,也可以创建一个视图(“NO FORCE”是

默认值)通过这种方式:

CREATE FORCE VIEW test_view AS

SELECT c1, c2 FROM test_table; -- table, which does not exist yet.

由于我们没有使用FORCE选项,因此未创建视图。但是,尝试访问

view会出错,因为表TEST_TABLE尚不存在。

答案 2 :(得分:0)

哇,没关系。他们甚至没有要我这样做。我错过了原始电子邮件中的那一部分。

答案 3 :(得分:0)

通过使用“FORCE”,我们还可以通过双表创建视图(oracle的默认表)。

1-示例:创建强制视图v1作为从双重选择a,b,c;

警告:使用编译错误创建的视图。

2-example:create force view v2 as select * from dual;

答案:已创建视图。

答案 4 :(得分:0)

您应该使用force关键字。

<div class="my-button" data-featherlight="#mylightbox" data-jarallax data-speed="0.2">Content</div>