2017-07-24 8 views
1

Ich verwende oracle_fdw, um von einem postgres 9.5.3 zu einer Oracle-Datenbank zu verbinden.Referenz auf Foreign Table Postgres 9.5

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..); 

Dann wird die Außen Tabelle erstellt wurde:

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

Die Tabelle den ich versuche zu verweisen aus:

die Server und Benutzerzuordnungen haben sich auf dem Postgres db erstellt

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

Der Versuch, die Einschränkung hinzuzufügen:

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; 

Ergebnisse in:

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

Frage: Sie befinden sich auf fremden Tabellen nicht verweisen können, richtig? Weil es Oracle egal wäre, wenn eine andere Datenbank auf ihre Tabelle verweist und nur ihre Einträge bearbeitet/löscht.

Antwort

2

Korrekt, Sie können keine Fremdschlüsseleinschränkungen von oder zu einer Fremdtabelle haben.

Der Grund ist, dass es für PostgreSQL keine Möglichkeit gibt, die Korrektheit der Einschränkung zu erzwingen, also wäre es ziemlich nutzlos.

+0

Danke für die Bestätigung, Laurenz! – Jakob

Verwandte Themen