如何在插入后创建触发器而不在postgres中返回NEW?

时间:2018-01-21 07:52:06

标签: sql database postgresql triggers

插入后为什么这样做?如何写这样的东西:

    CREATE FUNCTION update_auto_dates() RETURNS trigger AS $update_auto_dates$
    BEGIN
    INSERT INTO dates (dates_user, dates_object, dates_object_id, dates_date) VALUES (NEW.user, NEW.object, NEW.object_id, NEW.date);
    END;
$update_auto_dates$ LANGUAGE plpgsql;

CREATE TRIGGER update_auto_dates AFTER INSERT ON log
    FOR EACH STATEMENT EXECUTE PROCEDURE update_auto_dates();

1 个答案:

答案 0 :(得分:1)

The trigger function is required to return something因为它的定义没有定义它被用作后触发器。这只在触发器定义中已知。

添加RETURN NEW;语句可能是一个好主意,以防止在将来(意外地)将其用作BEFORE触发器时出现意外情况。您也可以选择RETURN NULL;,因为AFTER触发器会忽略该结果。