在PostgreSQL 8.3数据库中,我有“预订”表,按ID引用“booking_transactions”表。这样每次预订都属于一次交易。可以从数据库中删除预订。
当引用它的所有“预订”都消失后,如何确保“booking_transactions”行被自动删除?
我怀疑ON DELETE“预订”触发器不起作用,因为它必须查询“预订”表的其他行。
答案 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;
必须在预订“删除”
后执行