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

I nomi delle funzioni in PostgreSQL non fanno distinzione tra maiuscole e minuscole?

I nomi delle funzioni sono identificatori (come nomi di tabelle, nomi di campi), le stesse regole sulla distinzione tra maiuscole e minuscole si applicano a tutti.

In breve, gli identificatori sono senza distinzione tra maiuscole e minuscole, a meno che non siano citati .

Più precisamente, un identificatore senza virgolette viene convertito internamente in minuscolo e quindi viene tentata una corrispondenza sensibile al caso. Ciò può renderti la vita infelice (ad es. bug nascosti, ore sprecate), in genere se hai utilizzato identificatori tra virgolette durante la definizione della tabella o della funzione.

Ecco perché dovresti sempre definire la tua convenzione di denominazione e attenerti ad essa.

Consiglio generale:usa sempre il minuscolo per gli identificatori e sii felice.

db=# select now();
              now
-------------------------------
 2011-06-10 16:33:06.588401-03
(1 row)

db=# select Now();
              now
-------------------------------
 2011-06-10 16:33:08.066818-03
(1 row)

db=# select "now"();
              now
-------------------------------
 2011-06-10 16:33:14.543381-03
(1 row)

db=# select "Now"();
ERROR:  function Now() does not exist
LINE 1: select "Now"();
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.