我尝试使用下面的查询在PostgreSQL中创建分区表,并按日期(01~31)存储数据。
CREATE TABLE test (
aaa varchar(4) NOT NULL,
bbb int4 NOT NULL,
ccc timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "PK_test" PRIMARY KEY (aaa, bbb)
) PARTITION BY RANGE(to_char(ccc, 'DD'));
CREATE TABLE test_01 PARTITION OF test FOR VALUES FROM ('01') TO ('02');
...
CREATE TABLE test_31 PARTITION OF test FOR VALUES FROM ('31') TO ('32');
字符串
但是,PARTITION BY RANGE(to_char(ccc, 'DD'))
中出现以下错误。
functions in partition key expression must be marked IMMUTABLE
型
如何按日期对表进行分区?
1条答案
按热度按时间y1aodyip1#
使用表达式作为分区键不允许使用主键约束。因此,我们从根表中删除了私钥约束,并将该约束添加到叶表中。
字符串