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
相关产品推荐
相关产品推荐

