您可以使用dblink擴展連接回數據庫並在不同的連接上執行語句。例如,這通常也用於在事務回退之前記錄錯誤。
快速演示:
CREATE EXTENSION dblink; -- or run the script from contrib before version 9.1
select * from dblink('dbname=steve', $$
select datname, procpid, current_query from pg_stat_activity
$$) r(datname name, pid int, current_query text);
生產:
datname | pid | current_query
---------+------+---------------------------------------------------------------------
steve | 8535 | select * from dblink('dbname=steve', $$ +
| | select datname, procpid, current_query from pg_stat_activity+
| | $$) r(datname name, +
| | pid int, current_query text);
steve | 9235 | +
| | select datname, procpid, current_query from pg_stat_activity+
| |
,所以你可以看到,這是兩個單獨的會話。 dblink提供了打開一個持久連接的功能,這個簡單的用法可以跳過。假設您已經有一個模式來放入進度信息,那麼您可以簡單地調用dblink()來通過第二個連接填充/更新它,而第一個連接繼續執行其長事務。
我已閱讀手冊,但無法弄清楚如何在我的問題中使用dblink。你不能解釋如何使用它更詳細? – n0nSmoker
我已經添加了一個相當演示如何使用dblink的答案。 – araqnid
Thanx!我會試試看。 – n0nSmoker