2017-07-24 59 views
1

我正在使用oracle_fdw从postgres 9.5.3连接到Oracle数据库。关于外部表Postgres的参考9.5

服务器和用户映射已经在Postgres的数据库创建:

CREATE FOREIGN SERVER foo FOREIGN DATA WRAPPER oracle_fdw OPTIONS (connection info..); 
    GRANT USAGE ON FOREIGN SERVER foo TO my_user; 
    CREATE USER MAPPING FOR my_user SERVER foo OPTIONS (user, password..); 

然后外部表的创建:

CREATE FOREIGN TABLE FT_ORACLE(
    my_id integer, 
    description character varying(40)) SERVER foo OPTIONS (schema, table); 

我试图从参考下表:

CREATE TABLE T_LOCALE(
    id bigint NOT NULL, 
    oracle_id integer, 
    description character varying(40), 
    CONSTRAINT t_locale_pkey PRIMARY KEY(id)); 

试图添加约束:

ALTER TABLE T_LOCALE 
    ADD CONSTRAINT fk_t_locale_oracle_id FOREIGN KEY (oracle_id) 
    REFERENCES ft_oracle (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION; 

结果:

ERROR: referenced relation "ft_oracle" is not a table. 

问题:你不能对外国表参考,是否正确?因为Oracle不关心其他数据库是否引用了它的表并只编辑/删除它的条目。

回答

2

正确,您不能从外部表或从外部表获得外键约束。

原因是PostgreSQL没有办法强制约束的正确性,所以它是没用的。

+0

谢谢您的确认,Laurenz! – Jakob