Postgres 是否支持使用复合外键的“ON DELETE CASCADE”

问题描述 投票:0回答:1

这就是我的桌子的样子

CREATE TABLE T1(
id uuid not null,
order_time timestamptz NOT NULL,
PRIMARY KEY (id, order_time),
)

CREATE TABLE T2(
id uuid not null PRIMARY KEY,
t1_id uuid not null,
t1_order_time timestamptz not null,
FOREIGN KEY (t1_id, t1_order_time) REFERENCES T1 (id, order_time) ON DELETE CASCADE
)

我打算根据id和订单时间对表T1进行分区,因此它在id和订单时间上有复合主键。

如果我尝试删除 T1,postgres 会按预期给出错误“由于约束而无法删除表,提示:使用 DROP ... CASCADE 也删除依赖对象。”

现在,如果我执行“删除表 T1 级联”,它会删除 T1,只删除 T2 的外键约束。 T1 中没有删除相应的行

database postgresql partitioning
1个回答
0
投票

摘自手册

自动删除依赖于表的对象(例如视图),进而删除依赖于这些对象的所有对象

对象是数据库对象,例如视图和约束。不是数据。如果要删除相关数据,必须先使用DELETE或TRUNCATE。

© www.soinside.com 2019 - 2024. All rights reserved.