我的服务器中有两个分离的数据库。我想在另一个数据库中使用一个数据库中的表,所以我创建了一个外部模式:
import sys
现在,我可以访问数据库中核心服务器的任何表。例如,我在核心服务器中有一个“用户”表,因此我可以使用以下代码访问其内容:
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;
它正常工作。
现在,我想在数据库中创建一个表,该表引用用户表(“核心”模式的表)中的列。我正在尝试通过以下语句实现这一点:
SELECT * from core.user;
但是我收到以下错误消息:
CREATE TABLE localtablename ( id SERIAL PRIMARY KEY, user_id INT REFERENCES core.user (id) NOT NULL);
我尝试使用core.user,“ core”。“ user”和其他组合,但是总是收到此错误。有人知道我在做什么错吗?