Mit første gæt vil være, at du har at gøre med to forskellige tabeller navngivet bg . En i skemaet tiger , og en anden i et ikke-oplyst skema, der kommer før tiger i din search_path - eller tiger er ikke i search_path overhovedet.
Find alle tabeller med navnet bg (forskel mellem store og små bogstaver) i alle skemaer i den aktuelle db:
SELECT * FROM pg_tables WHERE tablename = 'bg';
For at forstå search_path indstilling:
For at forstå strukturen af en Postgres DB-klynge:
Hvis det ikke er det, kan dit indeks være beskadiget. Jeg ville først prøve en REINDEX
:
REINDEX bg_pkey;
Arv!
Jeg kan se i din tilføjede tabeldefinition:
Mistanke om, at rækken med bg_id ='470370111002' bor faktisk i underordnet bord tiger_data.tn_bg . Men din FK-begrænsning refererer til overordnet tabel . FK-begrænsninger nedarves ikke.
Hvad får du, hvis du forespørger:
SELECT * FROM ONLY bg WHERE bg_id ='470370111002' Hvis min hypotese holder, får du ingen række . Læs kapitlet Forbehold stærk> på siden Arv i manualen .
Relateret: