我在Oracle12的MV中使用预构建表选项时遇到了问题。下面的代码运行良好:
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;上一次选择返回,如预期的那样:
NUMBEROFEMPS
------------
1但是,如果我使用ON PREBUILT TABLE选项,什么也不会发生。我的意思是,MV仍然是空的:
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;上一次选择不返回任何行。
有人知道会发生什么吗?
发布于 2016-11-20 21:01:14
如果在预构建表上使用WITH ROWID -,则不能使用REFRESH FAST。WITH ROWID Clause
https://stackoverflow.com/questions/40703074
复制相似问题