添加间隔每月分区

时间:2020-06-15 05:15:53

标签: oracle datatable partitioning create-table

我想创建此表,在endTime列上按月划分分区。 我的意思是每个月都有一个由oracle自动添加的分区。

create table T_CALLSESSION()  PARTITON BY RANGE (C_ENDTIME )
INTERVAL(NUMTOYMINTERVAL(1,'month'); (
    C_ID NUMBER(34, 0) not null,
    C_ENDTIME timestamp not null,
    C_STARTTIME timestamp not null,
    C_TYPE number(10,0) not null,
    F_CREATOR NUMBER(34, 0),
    F_MESSAGE_THREAD NUMBER(34, 0),
    primary key (C_ID)
);

行得通吗?

1 个答案:

答案 0 :(得分:1)

您的代码中有一些错误。

  • 表名不应包含括号()
  • PARTITION子句必须在声明列和约束之后。
  • 您必须使用INTERVAL分区,以便自动创建新分区。
  • 必须使用一个恒定值创建一个分区,然后自动创建其他分区。

使用以下代码:

create table T_CALLSESSION  (
    C_ID NUMBER(34, 0) not null,
    C_ENDTIME timestamp not null,
    C_STARTTIME timestamp not null,
    C_TYPE number(10,0) not null,
    F_CREATOR NUMBER(34, 0),
    F_MESSAGE_THREAD NUMBER(34, 0),
    primary key (C_ID)
) PARTITION BY RANGE (C_ENDTIME)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
( 
   PARTITION T_CALLSESSION_P1 VALUES LESS THAN (TO_DATE('01-06-2020', 'DD-MM-YYYY'))
);
相关问题