2017-07-24 111 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