相关疑难解决方法(0)

如何在PostgreSQL中使用(安装)dblink?

我已经习惯了Oracle并在我的架构中创建了一个dblink,然后访问了这样一个远程数据库:mytable@myremotedb那么对于PostgreSQL有没有相同的做法?

现在我正在使用这样的dblink:

SELECT logindate FROM dblink('host=dev.toto.com
                              user=toto
                              password=isok
                              dbname=totofamily', 'SELECT logindate FROM loginlog');
Run Code Online (Sandbox Code Playgroud)

当我执行此命令时,我收到以下错误:

提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.

有人有想法吗?我们是否必须"激活"dblinks或在使用它们之前做些什么?

我们要查询的远程数据库有什么问题吗?我们还要激活dblink吗?我一直都有could not establish connection.这是行类型:

SELECT dblink_connect_u('host=x.x.x.x dbname=mydb user=root port=5432');
Run Code Online (Sandbox Code Playgroud)

IP地址正确,Postgres正在远程服务器上运行.任何的想法?

sql postgresql dblink

56
推荐指数
4
解决办法
13万
查看次数

Postgres是否支持嵌套或自治事务?

我有一种情况,我必须提交一部分代码作为自己的事务.
我创建了一个表subtransaction_tbl:

CREATE TABLE subtransaction_tbl
(
  entryval integer
)
Run Code Online (Sandbox Code Playgroud)

和语言plpython3u中的函数:

CREATE FUNCTION subtransaction_nested_test_t() RETURNS void
AS $$
plpy.execute("INSERT INTO subtransaction_tbl VALUES (1)")
with plpy.subtransaction():
    plpy.execute("INSERT INTO subtransaction_tbl VALUES (2)")
$$ LANGUAGE plpython3u;
Run Code Online (Sandbox Code Playgroud)

第一种情况:

BEGIN TRANSACTION;
INSERT INTO subtransaction_tbl VALUES (4);
select  subtransaction_nested_test_t();
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

表中的条目是正确的:1,2,4

第二种情况:

BEGIN TRANSACTION;
INSERT INTO subtransaction_tbl VALUES (4);
select  subtransaction_nested_test_t();
ROLLBACK TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

表中的值未填充

我预计12应该添加到表中,subtransaction_tbl但令我惊讶的是没有插入任何值.我想象一个新的子事务由函数打开,它不应该依赖于父事务.如果我是对的,请告诉我.

Postgres有自动交易吗?或者我是否必须修改我的plpython3u函数?

sql postgresql transactions python-3.x

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

postgresql ×2

sql ×2

dblink ×1

python-3.x ×1

transactions ×1