0

我们可以在当前会话之外执行一段代码吗?换句话说,将执行委托给另一个工作线程,类似于dbms_job.submitOracle 中的 a。

我只找到了涉及像 Cron 这样的外部工具的解决方案,但没有看到任何使用 PostgreSQL DBMS 本身的选项。

我想在不阻塞当前会话的情况下运行的简单长运行块示例:

DO
$do$
begin
   FOR i IN 1..1000000
   loop
      // some long running inserts
      insert into my_table(x) values (i);
      commit;
   end loop;
end $do$;
4

2 回答 2

1

你应该看看这个新的 PostgreSQL 扩展pg_dbms_job,它实现了 Oracle DBMS_JOB 提供的所有特性,过程与 dbms_job.submit() 相同。

于 2021-08-25T09:24:38.433 回答
0

您一次只能在单个 PostgreSQL 数据库会话中运行一条语句。解决方案是启动第二个会话:然后一个会话可以执行脚本,您可以同时在另一个会话中执行其他工作。

于 2021-07-01T16:38:08.677 回答