触发器中的多个过程调用?
multiple procedure call in a 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
有没有调用多个程序的方法?
如评论所述,为每个过程创建一个触发器是一种方法。我认为您也可以将函数调用包装到一个过程中,例如 (psql example):
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();
我想从 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
有没有调用多个程序的方法?
如评论所述,为每个过程创建一个触发器是一种方法。我认为您也可以将函数调用包装到一个过程中,例如 (psql example):
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();