2011-11-02 6 views
6

Sto tentando di utilizzare la funzione currval di PostgreSQL per restituire l'ultimo ID di riga inserito di una tabella denominata Concept. Concept ha una chiave primaria seriale denominata cid e c'è stata una sequenza generata automaticamente denominata Concept_cid_seq.currval Funzione in PostgreSQL che lamenta che "la colonna non esiste"

provo la seguente dichiarazione e ottengo un errore:

SELECT currval("Concept_cid_seq"); 
ERROR: column "Concept_cid_seq" does not exist 
LINE 1: SELECT currval("Concept_cid_seq"); 
        ^

********** Error ********** 

ERROR: column "Concept_cid_seq" does not exist 
SQL state: 42703 
Character: 16 

Ma quando ho eseguito la query:

SELECT * from "Concept_cid_seq"; 

ottengo una tabella con una riga (come mi aspetto) che mostra colonne come last_value, start_value, ecc ...

Cosa mi manca qui? Sto passando l'informazione sbagliata a currval? Perché dice che la "colonna non esiste?"

+1

La documentazione utilizza virgolette singole, '''' invece di '" "'. vedi ancora lo stesso errore con entrambi gli stili delle quote? – SingleNegationElimination

+3

si accenna anche che il caso della sequenza è normalizzato in lettere minuscole a meno che contenga doppie virgolette, quindi dovresti probabilmente avere "currval ('" Concept_cid_seq "') ... – SingleNegationElimination

+1

@TokenMacGuy Sì, l'ho provato in entrambi i modi . Se uso le virgolette singole, non mantiene la maiuscola, quindi l'errore diventa "ERRORE: relazione" concept_cid_seq "non esiste". Mi chiedo se ci sia un qualche significato nel fatto che in questo caso lo chiami una relazione anziché una colonna ... – Drewmate

risposta

5

Si è scoperto che questo era un problema con le maiuscole e le virgolette. Poiché volevo conservare la maiuscola del nome della relazione, dovevo utilizzare sia sia e doppie virgolette per passare il nome della relazione corretta a currval.

Ho modificato la query in SELECT currval('"Concept_cid_seq"'); (notare le virgolette singole esterne) e ha funzionato correttamente.

Problemi correlati