2014-11-10 2 views
0

Я пытаюсь создать DB2 MQT таблицу в моей v10.5 DB2, но я получил следующее сообщение об ошибке:DB2 не может создать MQT таблицу

Неожиданный маркер «CREATE TABLE T_MQT AS ( ВЫБРАТЬ ID, COL1, C "был найден после" НАЧАЛО ЗАЯВЛЕНИЯ ". Ожидаемые маркеры могут включать:" ".. SQLCODE = -104, SQLSTATE = 42601, DRIVER = 4.16.53 Код SQL: -104, SQL Состояние: 42601

Вот мой оператор таблицы create:

 
CREATE TABLE T (
    ID    VARCHAR(128) NOT NULL, 
    COL1    VARCHAR(128), 
    COL2    VARCHAR(128), 
    COL3    VARCHAR(128), 
    COL4    VARCHAR(128), 
    COL5    VARCHAR(128), 
    PRIMARY KEY (ID) 
); 
CREATE TABLE T_MQT AS (
    SELECT ID, COL1, COL2, COL3 FROM T 
) 
DATA INITIALLY DEFERRED 
REFRESH IMMEDIATE 
SET INTEGRITY FOR T_MQT IMMEDIATE CHECKED NOT INCREMENTAL; 
+0

Какое издание DB2 вы используете? (Express-C, Workgroup Server Edition, ...). Обратите внимание, что MQT не поддерживаются в определенных версиях. –

ответ

0

Я нашел причину, что базовая таблица «ORGANIZE BY COLUMN». Поэтому я сменил sql на

 
    CREATE TABLE T (
     ID    INTEGER NOT NULL, 
     COL1    VARCHAR(128), 
     COL2    VARCHAR(128), 
     COL3    VARCHAR(128), 
     COL4    VARCHAR(128), 
     COL5    VARCHAR(128), 
     PRIMARY KEY (ID) 
    ) ORGANIZE BY ROW; 
    CREATE TABLE T_MQT (ID, COL1, COL2, COL3) 
    AS (select ID, COL1, COL2, COL3 from T) 
    DATA INITIALLY DEFERRED REFRESH IMMEDIATE MAINTAINED BY SYSTEM; 
    SET INTEGRITY FOR T_MQT IMMEDIATE CHECKED FULL ACCESS; 
0

Вам не хватает точки с запятой между CREATE TABLE T_MQT ... и заявление SET INTEGRITY.

Смежные вопросы