2017-03-03 41 views
-2

任何人都可以帮助我在INFORMIX中的现有表上创建按片段(GENERATED_DATE)的片段?根据范围创建片段

我尝试,但我不能

ALTER FRAGMENT ON TABLE neura_biahmis_prod.episode_service_rendered_tbl INIT 
    FRAGMENT BY RANGE(GENERATED_DATE) 
     INTERVAL (NUMTOYMINTERVAL(6,'MONTH')) 
PARTITION Q1_EPSIODE_SERVICES VALUES > DATE('2016-01-01') AND VALUES <= DATE('2016-06-01') IN datadbs1, 
PARTITION Q2_EPSIODE_SERVICES VALUES > DATE('2016-06-01') AND VALUES <= DATE('2016-12-01') IN datadbs2, 
PARTITION Q3_EPSIODE_SERVICES VALUES > DATE('2016-12-01') AND VALUES <= DATE('2017-01-01') IN datadbs3; 
+3

你为什么要出门?另外,你有尝试过什么吗?请看[ASK]和[MCVE]来改善您的问题。另外,为什么Oracle标签? – Aleksej

回答

0

PARTITION子句只能包含1个不等式操作者,即较小的运营商(<)。

按照手册(FRAGMENT BY clause):

.-,-----------------------------------------------------------. 
    V                | 
>----PARTITION--partition--+-VALUES < range_expr-+--IN--dbspace-+--| 
          | (2)     |     
          '-------VALUES IS NULL-'     

所以,你必须改变你的分区条款,这样的事情:

PARTITION Q1_EPISODE_SERVICES VALUES < DATE('2016-07-01') IN datadbs1, 
PARTITION Q2_EPISODE_SERVICES VALUES < DATE('2017-01-01') IN datadbs2, 
PARTITION Q3_EPISODE_SERVICES VALUES < DATE('2017-07-01') IN datadbs3; 

注意与INIT子句,表将重建。确保你有足够的磁盘空间(如果你的数据库被记录,这将是一个单一的事务,你可能会遇到一个长事务)。

+0

谢谢@luis。是否有可能我可以在不删除约束和表的情况下对表进行分段。 –