请有人检查我的代码以了解为什么会出现语法错误
桌子:
CREATE TABLE post_partitioned (
pk integer,
title TEXT,
content TEXT,
author INTEGER,
category INTEGER,
reply_to INTEGER,
created_on TIMESTAMP WITH TIME ZONE,
last_edited_on TIMESTAMP WITH TIME ZONE,
editable BOOLEAN,
likes INTEGER,
CONSTRAINT created UNIQUE ( pk, created_on )
)
PARTITION BY RANGE (created_on);
表达:
ALTER TABLE post_partitioned ALTER COLUMN pk TYPE int GENERATED ALWAYS AS IDENTITY
文档: https: //www.postgresql.org/docs/current/sql-altertable.html
出现此错误的原因是,具有唯一约束或主键的表无法在 PostgreSQL 中直接分区。唯一约束 (CONSTRAINT created UNIQUE (pk, created_on)) 跨越多个分区,这在 PostgreSQL 分区的当前实现中是不允许的。
为了解决这个问题,您可以创建没有唯一约束的表,然后在每个分区上单独添加唯一约束。