Newsgroup: it.comp.software.database
Titolo: postgres e i nomi dei campi.

E' solo il database postgres che si arrabbia se uso il camelcase per i 
nomi dei campi, tipo companyName, o e' buona norma non usarli?

 nomi dei campi, tipo companyName, o e' buona norma non usarli?
Postgres è case insensitive per quanto riguarda identificatori e parole 
chiave. Come gran parte dei dbe, a dirla tutta...
Non è che per caso hai un altro campo con stesso nome ma diverse maiuscole?


Assolutamente no, ho provato a rinomiare la colonna incriminata mettendo 
tutto minuscolo e funziona.
Se uso il camelcase mi dice che la colonna non esiste.

 Se uso il camelcase mi dice che la colonna non esiste.
Eppure:
www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS
Usi i doppi apici ("Quoting an identifier [...] makes it case-sensitive")?
Che sw usi per interfacciarti al db?


E si uso i doppi apici.
Mi devo interfacciare al db da ruby, ruby on rails per la precisione, e 
il comando per poter usare la clausola LIKE e': Supplier.find(:all, 
:conditions => ["companyname LIKE ?", "%#{params[:ragioneSociale]}%"]).
Se tolgo gli apici al nome del campo mi da errore.

 nomi dei campi, tipo companyName, o e' buona norma non usarli?
Io il camelcase non lo adopero, ma ricordo che tempo fa feci l'errore di 
usarlo e persi una sera a capire perché le query non funzionavano.
Tipo (ora non ricordo esattamente cosa feci, ma piů o meno una cosa del 
genere):
psql> create table Pippo ....;
CREATE TABLE
psql> select * from Pippo;
ERROR: relation "Pippo" does not exist
Poi mi venne l'illuminazione, droppai il tutto, feci tutto lowercase e 
andai a dormire felice.
Andrea


Per le tabelle ok ma accidenti, non pensavo dovessi fare i conti anche 
per i nomi dei campi, e' normale utilizzare il camelcase sui nomi 
composti, vabbe' mi servira' di lezione.

 composti, vabbe' mi servira' di lezione.
E` normale in altri contesti, e` deleterio in ambito SQL. Usa nomi di
tabelle aventi un case indefinito (ovvero senza mettere i nomi tra
virgolette) e vivi felice
Enrico


il comando in ruby che avevo citato in un post precedente mi impone di 
usare le virgolette per il nome del campo.

 usare le virgolette per il nome del campo.
Però il comando che hai citato usa le virgolette nel codice ruby, non in 
quello SQL. E' una stringa ruby, non un identificatore SQL.
Resta il fatto che entra in ballo un altro fattore: il driver di 
connessione usato da ruby.
Fossi in te, visti i problemi, metterei tutto in minuscolo e fine delle 
seccature ;)
Certo rimane il dubbio, anche perché personalmente non ho mai 
riscontrato questo problema né con java né con python.

 riscontrato questo problema né con java né con python.
Ripensandoci mi č venuto in mente che un problema simile l'avevo 
riscontrato usando pgadmin3 e ho fatto qualche prova: in effetti mette 
tutti i nomi (di tabelle e campi) in minuscolo e segnala un errore.
Usando i doppi apici il problema non si verifica.
Purtroppo ora non ho tempo di verificare a partire da un linguaggio di 
programmazione. Se vuoi fare una prova puoi modificare l'istruzione ruby 
aggiungendo gli apici, da:
["companyname LIKE ?", "%#{params[:ragioneSociale]}%"]
a:
["\"companyName\" LIKE ?", "%#{params[:ragioneSociale]}%"]
(circa ;) )

Pablo Xon ha scritto:

Ho messo tutto in minuscolo non vorrei trovarmi delle sorprese :-)