umieść nazwę tabeli w cudzysłowie, jeśli chcesz, aby postgres zachował wielkość liter w nazwach relacji.
Cytowanie identyfikatora sprawia również, że rozróżniana jest wielkość liter, podczas gdy niecytowane nazwy są zawsze składane na małe litery . Na przykład identyfikatory FOO, foo i „foo” są traktowane przez PostgreSQL jako takie same, ale „Foo” i „FOO” różnią się od tych trzech i od siebie nawzajem. (Zwijanie nazw bez cudzysłowów na małe litery w PostgreSQL jest niezgodne ze standardem SQL, który mówi, że nazwy bez cudzysłowów powinny być składane do wielkich. Zatem foo powinno być równoważne „FOO”, a nie „foo” zgodnie ze standardem. Jeśli chcesz pisać przenośne aplikacje, którym polecano zawsze cytować konkretną nazwę lub nigdy jej nie cytować .)
z dokumentów (podkreślenie moje)
przykład z cytatem:
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)
przykład bez cytowania:
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)
Więc jeśli utworzyłeś tabelę z cudzysłowami, nie powinieneś pomijać cudzysłowów przy jej zapytaniu. Ale jeśli pominiesz cudzysłowy tworzące obiekt, nazwa została zmieniona na małe i tak będzie z wielką nazwą w zapytaniu - w ten sposób "nie zauważysz" tego.