我们有一个要求,即使在上一个事务完全执行之前,命令也应该到达UI 所以需要一个异步函数或一个异步触发器 或者我们可以在DB ??
中的特定表上进行异步提交答案 0 :(得分:1)
您可以使用dblink在事务中执行不会被它隔离的查询 - 结果将在提交之前提供,甚至在回滚之后可用。
create extension dblink;
create table logs (id serial, log text);
create or replace function log_me()
returns void
as $$
begin
perform dblink('dbname=postgres', $q$ INSERT INTO logs (log) values ('Hello world'); $q$);
perform pg_sleep(100);
end;
$$
language plpgsql;
select log_me();
--in different session/conenction, while function still waits on pg_sleep - returns 1 row
select * from logs;
dblink还可以发送异步查询:https://www.postgresql.org/docs/current/static/contrib-dblink-send-query.html如果这是你需要的。