首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle:使用预构建表时不刷新实体化视图

Oracle:使用预构建表时不刷新实体化视图
EN

Stack Overflow用户
提问于 2016-11-20 18:42:13
回答 2查看 683关注 0票数 0

我在Oracle12的MV中使用预构建表选项时遇到了问题。下面的代码运行良好:

代码语言:javascript
运行
复制
CREATE TABLE empt 
  ( ename VARCHAR2(20),
    empno INTEGER PRIMARY KEY);

CREATE MATERIALIZED VIEW LOG ON empt
   WITH SEQUENCE , rowid (empno)
 INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW empt_MV
    REFRESH FAST ON COMMIT 
    WITH ROWID
     AS
     SELECT count(*) numberofemps
     FROM empt ;

INSERT INTO empt VALUES ('A',1);
COMMIT;

SELECT * FROM empt_MV;

上一次选择返回,如预期的那样:

代码语言:javascript
运行
复制
NUMBEROFEMPS
------------
           1

但是,如果我使用ON PREBUILT TABLE选项,什么也不会发生。我的意思是,MV仍然是空的:

代码语言:javascript
运行
复制
drop materialized view empt_mv;
drop materialized view log on empt;
drop table empt;

CREATE TABLE empt 
  ( ename VARCHAR2(20),
    empno INTEGER PRIMARY KEY);

CREATE MATERIALIZED VIEW LOG ON empt
   WITH SEQUENCE , rowid (empno)
 INCLUDING NEW VALUES;

CREATE TABLE empt_MV (
  numberofemps NUMBER);

CREATE MATERIALIZED VIEW empt_MV
    ON PREBUILT TABLE
    REFRESH FAST ON COMMIT 
    WITH ROWID
     AS
     SELECT count(*) numberofemps
     FROM empt ;

INSERT INTO empt VALUES ('A',1);
COMMIT;

SELECT * FROM empt_MV;

上一次选择不返回任何行。

有人知道会发生什么吗?

EN

Stack Overflow用户

发布于 2016-11-20 21:01:14

如果在预构建表上使用WITH ROWID -,则不能使用REFRESH FASTWITH ROWID Clause

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40703074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档