如何在PostgreSQL中使用非公共模式添加外键?

如何在PostgreSQL中使用非公共模式添加外键?,postgresql,foreign-keys,database-schema,ddl,Postgresql,Foreign Keys,Database Schema,Ddl,我正在尝试使用此psql命令添加外键: places_local=> ALTER TABLE prestamos_bienes.bienes ADD CONSTRAINT "bienes_prestamos_bienes.marcas_id_marca_fk" FOREIGN KEY (id_marca) REFERENCES "prestamos_bienes.marcas" (id_marca); 但我得到了这个错误: ERROR: no existe la relación «pr

我正在尝试使用此psql命令添加外键:

places_local=> ALTER TABLE prestamos_bienes.bienes
ADD CONSTRAINT "bienes_prestamos_bienes.marcas_id_marca_fk"
FOREIGN KEY (id_marca) REFERENCES "prestamos_bienes.marcas" (id_marca);
但我得到了这个错误:

ERROR: no existe la relación «prestamos_bienes.marcas»
这意味着:

ERROR: relation «prestamos_bienes.marcas» does not exist
代码为42P01(未定义的表格)

我的数据库是:places\u local

我的模式是:prestamos\u bienes

我的表格是:bienesmarcas

标识符
“prestamos\u bienes.marcas”
是没有模式限定的名称

完全限定名称的每个部分都需要单独引用

ALTER TABLE prestamos_bienes.bienes
   ADD CONSTRAINT "bienes_prestamos_bienes.marcas_id_marca_fk"
   FOREIGN KEY (id_marca) REFERENCES "prestamos_bienes"."marcas" (id_marca);
或者最好不要完全引用:

ALTER TABLE prestamos_bienes.bienes
   ADD CONSTRAINT bienes_marcas_fk
   FOREIGN KEY (id_marca) REFERENCES prestamos_bienes.marcas (id_marca);
一般来说,应该完全避免使用双引号

这样,外键名的用途也可能很清楚:
“bienes\u prestamos\u bienes.marcas\u id\u marca\u fk”
。这也是而不是模式限定名