参考外国表Postgres 9.5

时间:2017-07-24 15:25:56

标签: database oracle postgresql oracle-fdw

我正在使用oracle_fdw从postgres 9.5.3连接到Oracle数据库。

已在postgres db上创建服务器和用户映射:

   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不关心某个其他数据库是否已引用其表并只编辑/删除其条目。

1 个答案:

答案 0 :(得分:2)

正确,您不能在外表中使用外键约束。

原因是PostgreSQL无法强制执行约束的正确性,因此它将毫无用处。