sql >> Database teknologi >  >> RDS >> PostgreSQL

Fejl:Nøglen ... findes ikke i tabellen

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:




  1. Hvordan ATAN() virker i MariaDB

  2. NetSuite gemte søgeformel for at multiplicere resultaterne af to andre kolonner

  3. Opdel streng i rækker Oracle SQL

  4. Hvordan konverterer jeg dette fra TSQL til MYSQL?