22.6.3 与功能有关的分区限制

本节讨论 MySQL 分区中的限制,这些限制专门与分区 table 达式中使用的函数有关。

分区 table 达式中仅允许以下列 table 中显示的 MySQL 函数:

在 MySQL 5.7 中,TO_DAYS()TO_SECONDS()YEAR()UNIX_TIMESTAMP()函数支持分区修剪。有关更多信息,请参见第 22.4 节“分区修剪”

CEILING()和 FLOOR(). 这些函数中的每一个仅在将精确数字类型的参数(例如INT类型或DECIMAL中的一种)传递给参数后才返回整数。例如,这意味着以下CREATE TABLE语句因错误而失败,如下所示:

mysql> CREATE TABLE t (c FLOAT) PARTITION BY LIST( FLOOR(c) )(
    ->     PARTITION p0 VALUES IN (1,3,5),
    ->     PARTITION p1 VALUES IN (2,4,6)
    -> );
ERROR 1490 (HY000): The PARTITION function returns the wrong type

带有 WEEK 说明符的 EXTRACT()函数. EXTRACT()函数返回的值(用作摘录(上周)时)取决于default_week_format系统变量的值。因此,当EXTRACT()将单位指定为WEEK时,不允许将其用作分区函数。 (缺陷#54483)

有关这些函数的返回类型以及第 11.1 节“数值数据类型”的更多信息,请参见第 12.5.2 节“math 函数”