我的桌子是这样的
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 也删除依赖对象。”
现在,如果我执行“drop table T1 cascade”,它会删除 T1 并只删除 T2 的外键约束。不会从 T1 中删除任何相应的行
来自手册:
对象是数据库对象,例如视图和约束。不是数据。如果要删除相关数据,必须先使用 DELETE 或 TRUNCATE。