当所有孩子都不在时,自动删除父对象行

时间:2008-10-15 09:57:17

标签: postgresql

在PostgreSQL 8.3数据库中,我有“预订”表,按ID引用“booking_transactions”表。这样每次预订都属于一次交易。可以从数据库中删除预订。

当引用它的所有“预订”都消失后,如何确保“booking_transactions”行被自动删除?

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

2 个答案:

答案 0 :(得分:0)

触发“预订”应该有效,在触发器功能中查询表本身没有问题。

答案 1 :(得分:0)

以下plpgsql触发器功能完成工作

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;

必须在预订“删除”

后执行