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

Perché a PostgreSQL non piacciono i nomi delle tabelle MAIUSCOLE?

metti il ​​nome della tabella tra virgolette se vuoi che postgres conservi maiuscole e minuscole per i nomi delle relazioni.

Citare un identificatore rende anche la distinzione tra maiuscole e minuscole, mentre i nomi unquoted vengono sempre piegati in minuscolo . Ad esempio, gli identificatoriFOO, foo e "foo" sono considerati gli stessi da PostgreSQL, ma "Foo" e "FOO" sono diversi da questi tre e l'uno dall'altro. (La piegatura dei nomi senza virgolette in minuscolo in PostgreSQL è incompatibile con lo standard SQL, che dice che i nomi senza virgolette dovrebbero essere piegati in maiuscolo. Quindi, foo dovrebbe essere equivalente a "FOO" non "foo" secondo lo standard. Se vuoi scrivere applicazioni portatili a cui hai consigliato di citare sempre un nome particolare o di non citarlo mai .)

da documenti (enfasi mia)

esempio con virgolette:

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)

esempio senza virgolette:

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)

Quindi, se hai creato una tabella con virgolette, non dovresti saltare le virgolette durante la query. Ma se hai saltato le virgolette creando l'oggetto, il nome è stato piegato in minuscolo e così sarà con il nome maiuscolo nella query:in questo modo "non lo noterai".