触发器中有多个过程调用?

时间:2019-01-05 08:13:54

标签: postgresql triggers database-trigger

我想从postgres的触发器中调用多个过程。

CREATE TRIGGER fn_trigger_notify_ev
AFTER INSERT
ON public.event_notifications
FOR EACH ROW
EXECUTE PROCEDURE public.notify_events();
EXECUTE PROCEDURE public.notify_events_count();

执行此命令后,我一直收到错误消息,所以请让我知道,是否可以在触发器中调用多个过程?

错误消息:

ERROR:  syntax error at or near "public"
LINE 6:   EXECUTE PROCEDURE public.notify_events_count();
                        ^

********** Error **********

ERROR: syntax error at or near "public"
SQL state: 42601
Character: 167

有什么方法可以调用多个过程吗?

1 个答案:

答案 0 :(得分:2)

如前所述,为每个过程创建触发器是一种方法。我认为您也可以将函数调用包装到一个过程中,例如( psql 示例):

CREATE OR REPLACE FUNCTION do_notifies(
) RETURNS VOID AS $$
BEGIN
    PERFORM notify_events();
    PERFORM notify_events_count();
END; $$
LANGUAGE plpgsql;

在您的触发器中只是

EXECUTE PROCEDURE public.do_notifies();