首页 文章

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

提问于
浏览
2

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

首先我这样做了:

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

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

SELECT(fields)FROM(表)

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

5 回答

  • 0

    我打赌视图是在另一个架构中 . 这是否与您的第一个查询返回相同:

    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);
    
  • 4

    即使“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尚不存在 .

  • 0

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

  • 1

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

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

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

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

    答案:查看已创建 .

  • 0

    你应该使用force关键字..

    create force view my_view as elect column1 from table_test -- table is not exists here..
    

相关问题