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

Por que o PostgreSQL não gosta de nomes de tabelas MAIÚSCULAS?


coloque o nome da tabela entre aspas duplas se quiser que o postgres preserve maiúsculas e minúsculas para nomes de relações.

A citação de um identificador também diferencia maiúsculas de minúsculas, enquanto nomes sem aspas são sempre dobrados para letras minúsculas . Por exemplo, os identificadoresFOO, foo e "foo" são considerados iguais pelo PostgreSQL, mas "Foo" e "FOO" são diferentes desses três e um do outro. (A dobragem de nomes sem aspas para letras minúsculas no PostgreSQL é incompatível com o padrão SQL, que diz que nomes sem aspas devem ser dobrados para maiúsculas. Assim, foo deve ser equivalente a "FOO" e não "foo" de acordo com o padrão. Se você quiser escrever aplicativos portáteis que você recomenda sempre citar um nome específico ou nunca citá-lo .)

de documentos (ênfase minha)

exemplo com citação:
t=# create table "UC_TNAME" (i int);
CREATE TABLE
t=# \dt+ UC

t=# \dt+ "UC_TNAME"
                      List of relations
 Schema |   Name   | Type  |  Owner   |  Size   | Description
--------+----------+-------+----------+---------+-------------
 public | UC_TNAME | table | postgres | 0 bytes |
(1 row)

exemplo sem citar:
t=# create table UC_TNAME (i int);
CREATE TABLE
t=# \dt+ UC_TNAME
                      List of relations
 Schema |   Name   | Type  |  Owner   |  Size   | Description
--------+----------+-------+----------+---------+-------------
 public | uc_tname | table | postgres | 0 bytes |
(1 row)

Portanto, se você criou uma tabela com aspas, não deve pular as aspas consultando-a. Mas se você pulou as aspas criando o objeto, o nome foi dobrado para minúsculas e, portanto, ficará com o nome em maiúsculas na consulta - dessa forma, você "não notará".