ON DELETE触发器运行后行未被删除

时间:2014-06-19 14:47:18

标签: sql postgresql triggers

我在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();

我的问题是,触发器完全触发(触发器正在删除日志行),但是应该从触发触发器的表中删除的行不会被删除(订单不会被删除)。

如果我尝试手动删除订单行,它只是说没有行受到影响而且没有错误。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

NULL触发器返回BEFORE DELETE将中止删除操作。您应该返回old,或者将其设为AFTER DELETE触发器。