You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres FDW插入Oracle远程主键序列异常:版本问题?

问题:PostgreSQL外部表向Oracle插入数据时的主键序列处理异常

我们工作环境中有存储字符数据的老旧Oracle数据库,此前通过在PostgreSQL中创建Oracle表的外部表,实现了字符数据与地理数据的关联,运行正常。

现需开发QGIS插件,通过PostgreSQL外部表向Oracle数据库插入字符数据,但遇到远程Oracle表主键序列处理问题:

  • 本地环境:创建不含主键id列的外部表,插入时省略id字段,远程序列可正常自增。
  • 工作环境:若省略id字段,所有列会左移;尝试使用OPTIONS(table (select field1, field2))方式,插入时省略id字段会触发“id字段不允许为空”的错误。

推测问题源于pg_fdw扩展版本差异,两地外部表创建示例如下:

工作环境外部表

CREATE FOREIGN TABLE si.tbl_accaofiscal(
    idaccaofiscal numeric OPTIONS (key 'true') NOT NULL, -- 问题字段
    identidadepredial numeric NOT NULL,
    idreparticaofinancas numeric NOT NULL,
    idtpaccaofiscal numeric NOT NULL,
    descricao character varying(255) NULL COLLATE pg_catalog."default",
)
    SERVER oracle_si
    OPTIONS (schema 'SI_As', table 'TBL_ACCAOFISCAL');

本地环境外部表

CREATE FOREIGN TABLE si.tbl_accaofiscal(
    idaccaofiscal numeric OPTIONS (key 'true') NOT NULL, -- 插入时省略该字段可正常工作
    identidadepredial numeric NOT NULL,
    idreparticaofinancas numeric NOT NULL,
    idtpaccaofiscal numeric NOT NULL,
    descricao character varying(255) NULL COLLATE pg_catalog."default",
)
    SERVER oracle_si
    OPTIONS (schema_name 'SI_As', table_name 'TBL_ACCAOFISCAL');

可见两地外部表的OPTIONS参数存在差异,本地环境不支持使用schema和table参数。

内容的提问来源于stack exchange,提问作者Joao Folgado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:10:40