Chaves estrangeiras em PostgreSQL devem referenciar colunas que são chaves primárias (primary key) ou uma contraint unique, seja com uma coluna ou uma chave de colunas.
Um erro comum quando se viola esta regra é o abaixo apresentado:
ERROR: there is no unique constraint matching given keys for referenced table
Este erro ocorreu porque não foi possível criar a Foreign Key.
A regra para poder declarar um chave estrageira é:
- A foreign key deve referenciar um primary key ou uma constraint unique
- Os dois campos a serem relacionados devem ter um tipo de dados compartíveis
- O usuário / role deve ter o privilégio REFERENCES em ambas as tabelas afetadas