
# U0400057：GaussDB 不支持表的分区键中使用函数
#### 描述
GaussDB 不支持表的分区键中使用函数。
**数据库类型与版本**
- 源库类型与版本：MySQL 5.5、5.6、5.7、8.0 版本。
- 目标库类型与版本：GaussDB 所有版本。
**语法示例**
```
create table test_to
(
    id  date,
    id2 date
)
partition by range (to_days(id2))
    (
    partition p1 values less than (100),
    partition p2 values less than (maxvalue)
    );
```
#### 改造建议
方案一：
新增冗余列，触发器保证其值始终与原始分区表达式结果一致，并以该冗余列作为新的分区依据。
适用于GaussDB 集中式B兼容模式和GaussDB 分布式MySQL兼容模式。
示例：
```
create table test_to
(
    id      date,
    id2     date,
    COLUMN1 bigint
)
partition by range (COLUMN1)
    (
    partition p1 values less than (100),
    partition p2 values less than (maxvalue)
    );
CREATE OR REPLACE FUNCTION FUNC_test_to RETURN TRIGGER
as
BEGIN
    NEW.COLUMN1=to_days(new.id2);
    RETURN NEW;
END;
/
CREATE TRIGGER TRI_test_to
    BEFORE insert or update ON test_to
    FOR EACH ROW
EXECUTE PROCEDURE FUNC_test_to();
```
方案二：
业务改造。GaussDB M 兼容不支持触发器，无法使用方案一。
