POSTGRESQL: ссылка на столбец таблицы в другой базе данных - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть две отдельные базы данных на моем сервере.Я хотел бы использовать таблицы из одной базы данных в другой, поэтому я создал внешнюю схему:

CREATE EXTENSION postgres_fdw;
CREATE SERVER core_server
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host 'localhost', dbname 'core_db');
CREATE USER MAPPING FOR CURRENT_USER
  SERVER core_server
  OPTIONS (user 'root', password 'mysupersecretpassword');
CREATE SCHEMA core;

IMPORT FOREIGN SCHEMA public
  FROM SERVER core_server
  INTO core;

CREATE USER MAPPING FOR root
  SERVER core_server
  OPTIONS (user 'root', password 'mysupersecretpassword');

GRANT USAGE ON SCHEMA core TO root ;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA core TO root;

Теперь я могу получить доступ к любой таблице главного сервера в моей базе данных.Например, у меня есть таблица «user» на главном сервере, поэтому я могу получить доступ к ее содержимому с помощью следующего кода:

SELECT * from core.user;

Она работает правильно.

Теперь я хотел бысоздать таблицу в базе данных, которая ссылается на столбец в пользовательской таблице (схемы «ядро»).Я пытаюсь добиться этого с помощью следующего предложения:

CREATE TABLE localtablename ( id SERIAL PRIMARY KEY, user_id INT REFERENCES core.user (id) NOT NULL);

Но я получаю следующее сообщение об ошибке:

ERROR:  referenced relation "user" is not a table

Я пытался с core.user, "core""пользователь" и другие комбинации, но я всегда получаю эту ошибку.Кто-нибудь знает, что я делаю не так?

...