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

How to add foreign key using a non public schema in PostgreSQL?

我正在尝试使用此 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

PostgreSQL error 代码是 42P01 (undefined_table).

我的数据库是:places_local

我的架构是:prestamos_bienes

我的表是:bienesmarcas

标识符 "prestamos_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_prestamos_bienes.marcas_id_marca_fk"。这也是 而不是 模式限定名称。