POSTGRESQL:引用另一个数据库中的表的列

时间:2018-09-25 08:24:07

标签: sql postgresql foreign-keys schema

我的服务器中有两个分离的数据库。我想在另一个数据库中使用一个数据库中的表,所以我创建了一个外部模式:

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”和其他组合,但是总是收到此错误。有人知道我在做什么错吗?

0 个答案:

没有答案