CREATE TABLE t1(c1 INT,c2 INT) PARTITION BY RANGE(c1 + 1)
(
PARTITION p0 VALUES less than (100),
PARTITION p1 VALUES less than (200)
);
这个语句里面c1就不是主键啊,但是运行的时候也没有问题啊
我理解是,
这个语句里,没有定义主键,分区键可以是普通列或表达式,不会报错; 如果为表添加主键,则会报错,因为分区键 (c1 + 1)不是主键的子集
分区键必须是主键的子集,是为了保证分区表的主键唯一性约束能够正确生效。如果分区键是表达式或不包含在主键中,会导致主键唯一性检查失效。因此,在设计分区表时,需要确保分区键的列完全包含在主键中。