2011-06-09 46 views
1

我試圖在預先建立的表上構建一個物化視圖。我可以使用下面的語法沒有修飾符,它工作正常。Oracle - 我不能在其他MV子句中使用Materialized View的PREBUILD語句

CREATE MATERIALIZED VIEW TESTRESULT 
ON PREBUILT TABLE 
SELECT ... 
FROM ... 
WHERE ... 

但是,當向物化視圖添加額外的子句時,出現錯誤「缺少關鍵字」。我不確定我錯過了什麼,在建立在預建表之上的建築物的基礎上,我找不到任何文檔。

CREATE MATERIALIZED VIEW TESTRESULT 
NOCACHE 
LOGGING 
NOCOMPRESS 
NOPARALLEL 
BUILD IMMEDIATE 
REFRESH FORCE ON DEMAND 
WITH PRIMARY KEY 
ON PREBUILT TABLE 
AS 
SELECT ... 
FROM ... 
WHERE ... 

甲骨文Verision:10克

+1

你已經被現在的戰鬥這支MV一會兒。希望這會讓你在駝峯;-) – DCookie 2011-06-09 15:38:55

+0

這是,我幾乎完成這個任務:) – contactmatt 2011-06-10 18:54:38

回答

4

的ON預先建立的表選項不是你的一些選項兼容,爲CREATE MATERIALIZED VIEW文檔中描述:

  • 緩存,日誌記錄,並行和COMPRESS是從已建表中繼承的表屬性,因此與PREBUILT不兼容。
  • BUILD選項用於指定何時必須填充表格。但是,由於您使用了PREBUILT選項,所以表已經填充,因此這兩個選項不兼容。

還要確保你有參數是正確的順序。

以下工作:

SQL> CREATE TABLE TEST(ID NUMBER PRIMARY KEY); 

Table created 

SQL> CREATE TABLE testresult(ID NUMBER); 

Table created 

SQL> CREATE MATERIALIZED VIEW TESTRESULT 
    2 ON PREBUILT TABLE 
    3 REFRESH FORCE ON DEMAND 
    4 WITH PRIMARY KEY 
    5 AS 
    6 SELECT ID 
    7 FROM TEST; 

Materialized view created