Postgres 9.4 外部数据包装器"FDW"无法在从不同端插入之间发送串行数据类型



我有一个简单的2个CentOS服务器配置,使用postgresg -9.4来模拟postgresg -9.4中的FDW场景。

我使用fdw将一个简单的表与另一个服务器上的另一个数据库连接起来,从两端读取工作完美,问题是串行主键,它不同步;换句话说,如果我从原始表插入,在我从外表插入之后,它不会同步计数。

根据我从Nick Barnes得到的评论,是的,我确实需要保持两边的计数器同步,所以我做了一个函数,每次查询实际数据库的最新索引,这样就总是插入到正确的记录。我还不确定这是否会成功,但我很快就会让它在生产中使用。

我也遇到了同样的问题,并尝试了Negma在他的博客中建议的方法。此解决方案仅适用于只插入一行的情况。如果您在同一事务中插入更多行,select max(id)将始终返回相同的id,并且您将获得不唯一的id。

我通过将id的类型从串行/整数更改为uuid来解决这个问题。然后你可以像Negma建议的那样做,但是使用pgcrypto EXTENSION的gen_random_uuid()。

所以在国外服务器上我做了:

ALTER TABLE tablename ALTER COLUMN columnname SET DEFAULT gen_random_uuid();

对于外表也是如此。

相关内容

  • 没有找到相关文章

最新更新