PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Os nomes das funções no PostgreSQL não diferenciam maiúsculas de minúsculas?


Os nomes das funções são identificadores (como nomes de tabelas, nomes de campos), as mesmas regras sobre diferenciação de maiúsculas e minúsculas se aplicam a todos.

Em resumo, os identificadores não diferenciam maiúsculas de minúsculas, a menos que sejam citados .

Mais precisamente, um identificador sem aspas é convertido internamente para minúsculas e então uma correspondência sensível a maiúsculas e minúsculas é tentada. Isso pode tornar sua vida miserável (ou seja, bugs ocultos, horas perdidas), normalmente se você usou identificadores entre aspas ao definir a tabela ou função.

É por isso que você deve sempre definir sua própria convenção de nomenclatura e cumpri-la.

Conselho geral:use sempre letras minúsculas para identificadores e seja feliz.
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.