0

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

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

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

4

2 回答 2

0

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

于 2008-10-15T10:24:24.070 回答
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;

必须在预订的 DELETE 后执行

于 2008-10-15T11:30:52.533 回答