Domyślam się, że masz do czynienia z dwoma różne stoły o nazwie bg
. Jeden w schemacie tiger
, a drugi w nieujawnionym schemacie, który występuje przed tiger
w Twojej search_path
- lub tygrys nie znajduje się w search_path
w ogóle.
Znajdź wszystkie tabele o nazwie bg
(wielkość liter ma znaczenie) we wszystkich schematach w bieżącej bazie danych:
SELECT * FROM pg_tables WHERE tablename = 'bg';
Aby zrozumieć search_path
ustawienie:
Aby zrozumieć strukturę klastra Postgres DB:
Jeśli tak nie jest, Twój indeks może być uszkodzony. Najpierw spróbowałbym REINDEX
:
REINDEX bg_pkey;
Dziedziczenie!
Widzę w dodanej definicji tabeli:
Podejrzewam, że wiersz z bg_id ='470370111002'
faktycznie mieszka w stoliku podrzędnym tiger_data.tn_bg
. Ale Twoje ograniczenie FK odwołuje się do tabeli nadrzędnej . Ograniczenia FK nie są dziedziczone.
Co otrzymasz, jeśli wyślesz zapytanie:
SELECT * FROM ONLY bg WHERE bg_id ='470370111002'
Jeśli moja hipoteza jest słuszna, brak wiersza . Przeczytaj rozdział Zastrzeżenia na stronie Dziedziczenie podręcznika .
Powiązane: