PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Erro:Chave ... não está presente na tabela


Meu primeiro palpite é que você está lidando com dois tabelas diferentes chamado bg . Um no esquema tiger , e outro em um esquema não revelado que vem antes de tiger em seu search_path - ou o tigre não está no search_path de forma alguma.

Encontre todas as tabelas chamadas bg (diferencia maiúsculas de minúsculas) em todos os esquemas no banco de dados atual:
SELECT * FROM pg_tables WHERE tablename = 'bg';

Para entender o search_path contexto:

Para entender a estrutura de um cluster de banco de dados Postgres:

Se não for isso, seu índice pode estar corrompido. Eu tentaria primeiro um REINDEX :
REINDEX bg_pkey;

Herança!


Eu vejo na sua definição de tabela adicionada:

Suspeitando que a linha com bg_id ='470370111002' na verdade, reside na tabela filha tiger_data.tn_bg . Mas sua restrição FK faz referência à tabela pai . As restrições FK não são herdadas.
O que você obtém se consultar:
SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Se minha hipótese for válida, você não terá nenhuma linha . Leia o capítulo Advertências na página Herança do manual .

Relacionado: