代码之家  ›  专栏  ›  技术社区  ›  ashish

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

  •  1
  • ashish  · 技术社区  · 5 月前

    这就是我的桌子的样子

    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。。。也可以删除依赖对象。

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

    1 回复  |  直到 5 月前
        1
  •  1
  •   Frank Heikens    5 月前

    manual :

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

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