Postgresql:在后台触发
我需要让触发器在字段更新后运行或在后台运行。因为现在只要触发了触发器,UI就会被阻塞,直到触发器本身中的过程被执行为止。 无论如何,要以这样一种方式进行触发,即字段一更新,UI就不会阻塞 我试过:Postgresql:在后台触发,postgresql,triggers,Postgresql,Triggers,我需要让触发器在字段更新后运行或在后台运行。因为现在只要触发了触发器,UI就会被阻塞,直到触发器本身中的过程被执行为止。 无论如何,要以这样一种方式进行触发,即字段一更新,UI就不会阻塞 我试过: CREATE CONSTRAINT TRIGGER property_created_simple_prod_trigger AFTER UPDATE ON properties DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE P
CREATE CONSTRAINT TRIGGER property_created_simple_prod_trigger
AFTER UPDATE ON properties DEFERRABLE INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE simple_production_materialized_view_procedure_trigger();
但不幸的是,什么都不起作用。PostgreSQL没有后台过程/触发器,所以您不能直接这样做
我建议我们让触发器发送一个
通知
,让您的应用程序侦听。让应用程序的LISTEN
ing线程成为一个单独的连接,由一个单独的线程管理,在收到通知时进行后台处理。运行将更新调用到单独线程中的任何方法。请使用命令和结果列表更新问题,评论你得到了什么,你想得到什么,而不是背景工作者呢@当然,如果他们想实现自己的扩展,这是一个选项。但是没有什么可以做的。虽然有建议()和扩展()以及pg_background
可能是一种选择,但实际上,我会选择基于侦听/通知的方法,这就是它的用途。我已经编写了bgworkers,对于一个不太了解postgres代码的人来说,编写一个异步触发器辅助程序并不是一件有趣的事情。他们需要知道IPC机制和各种各样的东西。