---
title: "ALTER TABLEGROUP - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: "ALTER TABLEGROUP 描述 该语句用于对一个表组增加多张表和修改表组的属性。 语法 对一个表组增加多张表。 ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name [, table_name...]; 修改表组的分区规则。 ALTER TABLEGR…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.4

# ALTER TABLEGROUP

更新时间：2024-12-13 23:00:00

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/600.sql-statement-of-mysql-mode/1700.alter-tablegroup-of-mysql-mode.md)  

## 描述

该语句用于对一个表组增加多张表和修改表组的属性。

## 语法

- 对一个表组增加多张表。

  ```sql
  ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name [, table_name...];

  ```
 - 修改表组的分区规则。

  ```sql
  ALTER TABLEGROUP tablegroup_name tablegroup_option;

  tablegroup_option:
      SHARDING = 'NONE' | 'PARTITION' | 'ADAPTIVE'

  ```

## 参数解释

| **参数** | **描述** |
| --- | --- |
| tablegroup_name | 表组名称。对一个表组增加多张表时，表与表之间以逗号（','）分隔。当添加多个表时，允许表名重复。如果待添加的表已经属于待加入的表组，OceanBase 数据库不会报错。 |
| SHARDING | 表组的属性。如果不指定 `SHARDING` 属性，则默认创建 `ADAPTIVE` 的表组。`SHARDING` 取值如下：   - `NONE`：对加入表组的表没有限制。 - `PARTITION`：加入表组的表对应的一级分区，需要与表组中所有表的一级分区的分区方式一致，包括分区类型、分区个数和分区 Value。 - `ADAPTIVE`：加入表组的表对应的一级分区和二级分区，需要与表组中所有表的一级分区和二级分区的分区方式一致，包括分区类型、分区个数和分区 Value。  相同的分区方式包括：   - 分区类型相同（例如都是 Hash+Range 分区）。 - 如果是 Hash 分区，要求引用的列数相同，并且分区个数相同。 - 如果是 Range 分区，要求引用的列数相同，并且分区数相同，Range 分割点相同。  对于二级分区，根据其分区类型，要求和上述一致。 |

## 示例

- 创建名为 `tblgroup1` 的表组，其 `SHARDING` 属性为 `NONE`，并将分区表 `tbl1` 和分区表 `tbl2` 加入到表组中。

  ```shell
  obclient> CREATE TABLEGROUP tblgroup1 SHARDING = 'NONE';
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50))
      PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2)
        (PARTITION p0 VALUES in (01)
           (SUBPARTITION mp0 VALUES in ('01'),
            SUBPARTITION mp1 VALUES in ('02')),
         PARTITION p1 VALUES in (02)
            (SUBPARTITION mp3 VALUES in ('01'),
             SUBPARTITION mp4 VALUES in ('02'))
         );
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl2(col1 INT,col2 VARCHAR(50))
      PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2)
        (PARTITION p0 VALUES in (01)
          (SUBPARTITION mp0 VALUES in ('01'),
            SUBPARTITION mp1 VALUES in ('02')),
         PARTITION p1 VALUES in (02)
           (SUBPARTITION mp3 VALUES in ('01'),
            SUBPARTITION mp4 VALUES in ('02'))
         );
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup1 ADD tbl1,tbl2;
  Query OK, 0 rows affected

  ```

  由于 `tbl1` 和 `tbl2` 的分区方式一致，所以 `SHARDING` 属性可以更改为 `PARTITION` 或 `ADAPTIVE`。

  ```shell
  obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'PARTITION';
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup1 SHARDING = 'ADAPTIVE';
  Query OK, 0 rows affected

  ```
 - 创建名为 `tblgroup2` 的表组，其 `SHARDING` 属性为 `NONE`，向表组中添加非分区表 `tbl1` 和分区表 `tbl2`。

  ```shell
  obclient> CREATE TABLEGROUP tblgroup2 SHARDING = 'NONE';
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl1 (col INT);
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl2 (col1 BIGINT PRIMARY KEY,col2 VARCHAR(50))
      PARTITION BY LIST(col1)
        (PARTITION p0 VALUES IN (1, 2, 3),
         PARTITION p1 VALUES IN (5, 6),
         PARTITION p2 VALUES IN (DEFAULT)
        );
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup2 ADD tbl1,tbl2;
  Query OK, 0 rows affected

  ```

  由于表组 `tblgroup2` 中包含非分区表和分区表，所以 `SHARDING` 属性不能更改为 `PARTITION` 或 `ADAPTIVE`。

  ```shell
  obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'PARTITION';
  ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowed

  obclient> ALTER TABLEGROUP tblgroup2 SHARDING = 'ADAPTIVE';
  ERROR 4179 (HY000): not all tables are non-partitioned or partitioned, modify tablegroup sharding attribute not allowed

  ```
 - 创建名为 `tblgroup3` 的表组，其 `SHARDING` 属性为 `NONE`，向表组中添加分区表 `tbl1` 和分区表 `tbl2`。

  ```shell
  obclient> CREATE TABLEGROUP tblgroup3 SHARDING = 'NONE';
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl1(col1 INT,col2 VARCHAR(50))
     PARTITION BY LIST(col1) SUBPARTITION BY LIST COLUMNS(col2)
      (PARTITION p0 VALUES in (01)
        (SUBPARTITION mp0 VALUES in ('01'),
         SUBPARTITION mp1 VALUES in ('02'),
         SUBPARTITION mp2 VALUES in ('03')
         ),
       PARTITION p1 VALUES in (02)
         (SUBPARTITION mp3 VALUES in ('01'),
          SUBPARTITION mp4 VALUES in ('02'),
          SUBPARTITION mp5 VALUES in ('03'))
       );
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup3 ADD tbl1,tbl2;
  Query OK, 0 rows affected

  ```

  由于表组 `tblgroup3` 中 `tbl1` 和 `tbl2` 的一级分区的分区类型相同，二级分区分区类型不同（二级分区个数不同），所以 `SHARDING` 属性可以更改为 `PARTITION`，但是不能更改为 `ADAPTIVE`。

  ```shell
  obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'PARTITION';
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup3 SHARDING = 'ADAPTIVE';
  ERROR 4179 (HY000): subpartition num not matched, modify tablegroup sharding attribute not allowed

  ```
 - 创建名为 `tblgroup4` 的表组，其 `SHARDING` 属性为 `ADAPTIVE`，修改表组中表 `tbl1` 和表 `tbl2` 的分区个数，则表组中所有表此时分区方式不一致，表组中不能加入新的表 `tbl3`。

  ```shell
  obclient> CREATE TABLEGROUP tblgroup4 SHARDING = 'ADAPTIVE';
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl1(col1 INT,col2 INT)
      PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2)
        SUBPARTITION TEMPLATE
         (SUBPARTITION mp0 VALUES LESS THAN(2020),
          SUBPARTITION mp1 VALUES LESS THAN(2021),
          SUBPARTITION mp2 VALUES LESS THAN(2022))
         (PARTITION p0 VALUES LESS THAN(100),
          PARTITION p1 VALUES LESS THAN(200));
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl2(col1 INT,col2 INT)
      PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2)
        SUBPARTITION TEMPLATE
         (SUBPARTITION mp0 VALUES LESS THAN(2020),
          SUBPARTITION mp1 VALUES LESS THAN(2021),
          SUBPARTITION mp2 VALUES LESS THAN(2022))
        (PARTITION p0 VALUES LESS THAN(100),
         PARTITION p1 VALUES LESS THAN(200));
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup4 ADD tbl1,tbl2;
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl1
      ADD PARTITION (PARTITION p3 VALUES LESS THAN(400),
                     PARTITION p4 VALUES LESS THAN(500));
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl2 DROP SUBPARTITION p0smp0,p0smp1;
  Query OK, 0 rows affected

  obclient> CREATE TABLE tbl3(col1 INT,col2 INT)
      PARTITION BY RANGE(col1) SUBPARTITION BY RANGE(col2)
        SUBPARTITION TEMPLATE
         (SUBPARTITION mp0 VALUES LESS THAN(2020),
          SUBPARTITION mp1 VALUES LESS THAN(2021),
          SUBPARTITION mp2 VALUES LESS THAN(2022))
         (PARTITION p0 VALUES LESS THAN(100),
          PARTITION p1 VALUES LESS THAN(200));
  Query OK, 0 rows affected

  obclient> ALTER TABLEGROUP tblgroup4 ADD tbl3;
  ERROR 4179 (HY000): partition num not equal, add table to tablegroup not allowed

  ```

## 相关文档

- [CREATE TABLEGROUP](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001577358)
 - [DROP TABLEGROUP](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001577349)
 - [管理表组内的表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576022)
 - [查看表组信息](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576017)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
