在为全局分区

时间:2016-07-13 15:34:44

标签: oracle

我在外键上创建索引:

CREATE INDEX FK_SOME_TABLE ON SOME_TABLE(F_SOME_ID) 
LOCAL
LOGGING
TABLESPACE SOME_TABLESPACE
NOPARALLEL;

它正常工作。

我尝试在主键上创建唯一索引,但是每次我都会遇到错误 “遗漏了左括号”,我更加关于“遗漏左括号”的一些问题,但我无法得到解决方案。

CREATE UNIQUE INDEX PK_SOME_TABLE ON SOME_TABLE
        (SOME_ID) 
          TABLESPACE SOME_TABLESPACE
        LOGGING
        GLOBAL PARTITION BY RANGE (SOME_ID)
          INTERVAL (1000)
          (
            PARTITION P_1 VALUES LESS THAN (1000)
          )
        NOPARALLEL;

可能我在一个重要的地方省略了括号,但我真的不知道在哪里。 你能给我一些建议吗?

1 个答案:

答案 0 :(得分:0)

当我们使用创建UNIQUE INDEXGLOBAL PARTITION BY RANGE时,我们只能使用以下选项:

COMPRESS,
NOCMPRESS,
PCTFREE,
INITRANS,
MAXTRANS,
STORAGE,
TABLESPACE,
PARALLEL,
RECOVERABLE,
UNRECOVERABLE,
LOGGING,
NOLOGGING,
LOCAL,
GLOBAL

所以我们看到,我们不能使用INTERVAL,但这不是我犯的最后一个错误。如果我们使用GLOBAL PARTITION,我们必须为所有列指定MAXVALUE,因此我们必须添加值小于MAXVALUE的新分区。

我之前提到的create unique索引的正确陈述:

CREATE UNIQUE INDEX PK_SOME_TABLE ON SOME_TABLE
        (SOME_ID) 
        LOGGING
        TABLESPACE SOME_TABLESPACE            
        GLOBAL PARTITION BY RANGE (SOME_ID)
          (
            PARTITION P_1 VALUES LESS THAN (1000)
            PARTITION P_2 VALUES LESS THAB (MAXVALUE)
          )
        NOPARALLEL;