云数据库 GaussDB-ALTER TABLE SUBPARTITION:语法格式

时间:2023-11-01 16:22:02

语法格式

  • 修改表分区主语法。
    ALTER TABLE [ IF EXISTS ] { table_name  [*] | ONLY table_name | ONLY ( table_name  )}    action [, ... ];
    其中action统指如下分区维护子语法。
        add_clause    |    drop_clause   |        split_clause  |    truncate_clause
  • add_clause子语法用于为指定的分区表添加一个或多个分区。语法可以作用在一级分区上。
    ADD {partition_less_than_item | partition_list_item } [ ( subpartition_definition_list ) ]

    也可以作用在二级分区上。

    MODIFY PARTITION partition_name ADD subpartition_definition

    其中,分区项partition_less_than_item为RANGE分区定义语法,具体语法如下。

    PARTITION partition_name VALUES LESS THAN ( partition_value | MAXVALUE ) [ TABLESPACE tablespacename ]
    分区项partition_list_item为LIST分区定义语法,具体语法如下。
    PARTITION partition_name VALUES ( partition_value [, ...] | DEFAULT ) [ TABLESPACE tablespacename ]

    subpartition_definition_list为1到多个二级分区subpartition_definition对象,subpartition_definition具体语法如下。

    SUBPARTITION subpartition_name [ VALUES LESS THAN ( partition_value | MAXVALUE ) | VALUES ( partition_value [, ...] | DEFAULT )]  [ TABLESPACE tablespace ]

    若一级分区为HASH分区,不支持以ADD形式新增一级分区;若二级分区为HASH分区,不支持以MODIFY形式新增二级分区。

  • drop_clause子语法用于删除分区表中的指定分区。语法可以作用在一级分区上。
    DROP PARTITION  { partition_name | FOR (  partition_value )  } [ UPDATE GLOBAL INDEX ]

    也可以作用在二级分区上。

    DROP SUBPARTITION  { subpartition_name | FOR (  partition_value, subpartition_value )  } [ UPDATE GLOBAL INDEX ]
    • 若一级分区为HASH分区,不支持删除一级分区;若二级分区为HASH分区,不支持删除二级分区。
    • 不支持删除唯一子分区。
  • split_clause子语法用于把一个分区切割成多个分区。
    SPLIT SUBPARTITION { subpartition_name} { split_point_clause  } [ UPDATE GLOBAL INDEX ]

    指定Range分区策略切割点split_point_clause的语法为:

    AT ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] )
    指定List分区策略切割点split_point_clause的语法为:
    VALUES ( subpartition_value ) INTO ( SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] , SUBPARTITION subpartition_name [ TABLESPACE tablespacename ] )
    • 切割点的大小要位于正在被切割的分区的分区键范围内。
    • 只能把一个分区切割成两个新分区。
    • Range分区策略切割点是把当前分区以此切割点分割为两个分区(小于此分割点为一个分区,大于此分割点为另一个分区),所以Range分区策略切割点只能为一个。List分区策略切割点可以为多个,但不超过64个,即把这些切割点从当前分区的边界值提取出来作为一个新分区,当前分区剩余边界值作为另一个新分区。
    • List分区只支持切割Default分区。
  • truncate_clause子语法用于清空分区表中的指定分区。
    TRUNCATE SUBPARTITION  { subpartition_name } [ UPDATE GLOBAL INDEX ]
support.huaweicloud.com/centralized-devg-v2-opengauss/devg_03_0520.html