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

Errore:la chiave ... non è presente nella tabella

La mia prima ipotesi sarebbe che tu abbia a che fare con due tabelle diverse chiamato bg . Uno nello schema tiger e un altro in uno schema non divulgato che precede tiger nel tuo search_path - o la tigre non è nel search_path affatto.

Trova tutte le tabelle denominate bg (con distinzione tra maiuscole e minuscole) in tutti gli schemi nel db corrente:

SELECT * FROM pg_tables WHERE tablename = 'bg';

Per comprendere il search_path impostazione:

Per comprendere la struttura di un cluster di database Postgres:

In caso contrario, il tuo indice potrebbe essere danneggiato. Per prima cosa proverei un REINDEX :

REINDEX bg_pkey;

Eredità!

Vedo nella definizione della tabella aggiunta:

Sospettando che la riga con bg_id ='470370111002' vive effettivamente nella tabella figlio tiger_data.tn_bg . Ma il tuo vincolo FK fa riferimento alla tabella padre . I vincoli FK non vengono ereditati.
Cosa ottieni se esegui query:

SELECT * FROM ONLY bg WHERE bg_id ='470370111002'

Se la mia ipotesi è valida, ottieni nessuna riga . Leggi il capitolo Avvertenze nella pagina Ereditarietà del manuale .

Correlati: