在PostgreSQL 11的发布说明中,我发现了以下有关分区功能的改进:
尝试创建主键:
我遇到了一个错误 SQL错误[42809]。这意味着分区表上的外键无法工作。
也许我做错了什么。也许有人已经尝试过这个功能并知道它是如何工作的。 也许有人知道除了在应用程序中实现约束之外的解决方法。
- 为分区表添加对主键、外键、索引和触发器的支持
我需要这个功能并已经进行了测试。
创建表:
CREATE TABLE public.tbl_test
(
uuid character varying(32) NOT null,
registration_date timestamp without time zone NOT NULL
)
PARTITION BY RANGE (registration_date);
尝试创建主键:
ALTER TABLE public.tbl_test ADD CONSTRAINT pk_test PRIMARY KEY (uuid);
我遇到了一个错误SQL Error [0A000]。如果使用复合主键(uuid,registration_date),那么它可以工作。因为主键包含分区列。
结论:在分区表中创建主键存在限制(主键需要包含分区列)。
尝试创建外键
CREATE TABLE public.tbl_test2
(
uuid character varying(32) NOT null,
test_uuid character varying(32) NOT null
);
ALTER TABLE tbl_test2
ADD CONSTRAINT fk_test FOREIGN KEY (test_uuid)
REFERENCES tbl_test (uuid);
我遇到了一个错误 SQL错误[42809]。这意味着分区表上的外键无法工作。
也许我做错了什么。也许有人已经尝试过这个功能并知道它是如何工作的。 也许有人知道除了在应用程序中实现约束之外的解决方法。