代码之家  ›  专栏  ›  技术社区  ›  Ivan Krechetov

当所有子对象都消失时,自动删除父对象行

  •  0
  • Ivan Krechetov  · 技术社区  · 17 年前

    在PostgreSQL 8.3数据库中,我有一个“bookings”表,该表按ID引用“booking_transactions”表。因此,每个预订都属于一个事务。可以从数据库中删除预订。

    我怀疑ON-DELETE“bookings”触发器不起作用,因为它必须查询“bookings”表的其他行。

    2 回复  |  直到 17 年前
        1
  •  0
  •   AquilaX    17 年前

    “bookings”上的触发器应该可以工作。在触发器函数中查询表本身没有问题。

        2
  •  0
  •   Ivan Krechetov    17 年前

    BEGIN
    DELETE FROM
        booking_transactions bt
    WHERE
        bt.id = OLD.transaction_id AND
        NOT EXISTS (SELECT 1 FROM bookings b WHERE b.transaction_id = bt.id);
    
    RETURN OLD;
    END;
    

    必须在预订删除后执行