当使用这种格式时,postgres中的db_link是否会自动关闭连接?如何自动关闭postgres dblink?

时间:2013-06-11 13:10:58

标签: sql postgresql plpgsql pg

我有一个连接到远程数据库的查询,并将结果返回到函数中,如下所示。

CREATE OR REPLACE FUNCTION get_users()
$BODY$   
BEGIN
    RETURN QUERY
SELECT c.user_id, c.user_name, c.user_subscrib 
FROM dblink('remote_db1', 'select user_id,  user_name, user_subscrib from users_tbl') 
AS c(user_id int, user_name varchar, user_subscrib varchar);

END;
$BODY$;
LANGUAGE plpgsql;

一旦调用此函数,如select * from get_users();,它将返回连接到远程数据库的内部查询的结果,执行并方便地返回结果。我的问题是,我必须关闭dblink还是会自动关闭?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

假设您之前已使用dblink_connect连接并命名连接“remote_db1”,那么您需要在命名连接上执行dblink_disconnect。

PostgreSQL dblink

如果您包含连接字符串本身而不是使用命名连接,那么连接只会持续与查询一样长,然后自行关闭。

答案 1 :(得分:0)

我正在回答这个问题。 是的,它会自动关闭连接。如上所示,在命名dblink连接查询时,不需要显式使用db_link connect / disconnect。