2017-10-06 11 views
1

这里的SQL:为什么Postgres告诉我,当两个表都在同一个数据库上时,跨数据库引用不可用?

CREATE TABLESPACE fnord1 location '/tmp/fnord1'; 
CREATE TABLESPACE fnord2 location '/tmp/fnord2'; 

CREATE SCHEMA IF NOT EXISTS fnord; 

DROP TABLE IF EXISTS fnord.shea; 
DROP TABLE IF EXISTS fnord.wilson; 

CREATE TABLE fnord.shea (
    id text not null, 

    CONSTRAINT fnord_shea_id PRIMARY KEY (id) USING INDEX TABLESPACE fnord2 
) TABLESPACE fnord1; 

CREATE TABLE fnord.wilson (
    thing  text not null, 
    shea_id  bigserial not null, 

    CONSTRAINT fnord_wilson_id PRIMARY KEY (thing, shea_id) USING INDEX TABLESPACE fnord2, 
    CONSTRAINT fnord_wilson_shea_fkey FOREIGN KEY (shea_id) REFERENCES fnord.shea.id 
) TABLESPACE fnord1; 

失败的原因是外键的声明,与

ERROR: cross-database references are not implemented: "fnord.shea.id"

但是......这些都是在同一个数据库,不是吗?如果没有,那么让他们进入同一个数据库的正确方法是什么?

回答

0

使用schema.table_name(column_name)

CONSTRAINT fnord_wilson_shea_fkey FOREIGN KEY (shea_id) REFERENCES fnord.shea.id 

CONSTRAINT fnord_wilson_shea_fkey FOREIGN KEY (shea_id) REFERENCES fnord.shea(id) 
+0

啊啊啊,我就是在那里出了问题。我举了一些例子,但我没有意识到这是一个列,而不是其他类型的语法。 –

相关问题