我在PostgreSQL 8.4中工作并编写了一个触发函数,如下所示:
CREATE OR REPLACE FUNCTION otherschema.order_delete_log_procedure() RETURNS TRIGGER AS
$$
BEGIN
DELETE FROM otherschema.order_log AS thelog WHERE thelog.log_order_id=OLD.order_id;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER order_deletion_log_trigger BEFORE DELETE ON public.order FOR EACH ROW EXECUTE PROCEDURE
otherschema.order_delete_log_procedure();
我的问题是,触发器完全触发(触发器正在删除日志行),但是应该从触发触发器的表中删除的行不会被删除(订单不会被删除)。
如果我尝试手动删除订单行,它只是说没有行受到影响而且没有错误。有什么想法吗?
谢谢!
答案 0 :(得分:2)
从NULL
触发器返回BEFORE DELETE
将中止删除操作。您应该返回old
,或者将其设为AFTER DELETE
触发器。