Sto avendo questo strano problema usando PostgreSQL 9.3 con tabelle create usando qoutes. Per esempio, se creo una tabella utilizzando qoutes:ERRORE PostgreSQL: 42P01: relazione "[Tabella]" non esiste
create table "TEST" ("Col1" bigint);
la tabella viene correttamente creato e posso vedere che le quotazioni si mantengono quando vista nel riquadro SQL di pgAdminIII. Ma quando chiedo al DB di trovare l'elenco di tutte le tabelle disponibili (usando la query sottostante), vedo che il risultato non contiene virgolette attorno al nome della tabella.
select table_schema, table_name from information_schema.tables where not table_schema='pg_catalog' and not table_schema='information_schema';
Dal momento che il tavolo è stato creato con le citazioni, non posso utilizzare il nome della tabella restituita dalla query sopra direttamente dal momento che è non quotate e genera l'errore nel postato nel titolo.
Potrei provare a circondare i nomi delle tabelle con le virgolette in tutte le query, ma non sono sicuro che funzionerà sempre. Sto cercando un modo per ottenere l'elenco dei nomi delle tabelle citati tra virgolette nel risultato.
Sto riscontrando lo stesso problema con i nomi delle colonne, ma spero che se riesco a trovare una soluzione al problema dei nomi delle tabelle, una soluzione simile funzionerà anche per i nomi delle colonne.
+1 ad usare senza virgolette. – Othya
D'accordo sul fatto che non usare le virgolette in PostgreSQL rende la vita più semplice ma non sempre possibile nel mio caso poiché la mia applicazione non crea i database. Dovrebbe essere in grado di leggere i dati da database PostgreSQL di terze parti e non posso controllare come le tabelle vengono create da altri. In ogni caso, ciò che sorprende è che PostgreSQL non mi dice che una certa tabella è stata creata con le virgolette, ma quando uso un nome di tabella non quotato in una query, non lo consente. –
sa automaticamente che le citazioni sono state utilizzate non appena c'è una lettera non minuscola lì. quindi se una tabella è elencata come Test o così significa già che devi essere case sensitive. –