sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför gillar inte PostgreSQL tabellnamn med VERSALER?

sätt tabellnamn i dubbla citattecken om du vill att postgres ska bevara skiftläge för relationsnamn.

Att citera en identifierare gör den också skiftlägeskänslig, medan namn utan citationstecken alltid viks till gemener . Till exempel anses identifierarnaFOO, foo och "foo" vara lika av PostgreSQL, men "Foo" och "FOO" skiljer sig från dessa tre och varandra. (Vikningen av namn utan citationstecken till gemener i PostgreSQL är inkompatibel med SQL-standarden, som säger att namn utan citationstecken ska vikas till versaler. Således ska foo vara likvärdigt med "FOO" inte "foo" enligt standarden. Om du vill skriva bärbara applikationer som du rekommenderas att alltid citera ett visst namn eller aldrig citera det .)

från docs (min betoning)

exempel med citat:

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)

exempel utan att citera:

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)

Så om du skapade en tabell med citattecken bör du inte hoppa över citat när du frågar efter den. Men om du hoppade över citat som skapade objekt, veks namnet till gemener och så kommer det att vara med versaler i frågan - på så sätt "kommer du inte att märka" det.



  1. Databasdesign med Vertabelo

  2. Hur man listar alla tabeller i Oracle

  3. Vad är effekten av att placera commit efter DML i proceduren?

  4. Hur släpper man alla användartabeller?