Nie mogę znaleźć dokumentacji opisującej prawidłowe formaty nazwy schematu PostgreSQL. Wiem, że nazwa schematu nie może:
- zacznij od liczby
- mieć spacje
- zacząć od
pg_
Co jeszcze? Gdzie powinienem szukać
postgresql
Ramon Tayag
źródło
źródło
pg_
podkreślenia do tego łącza, jak Nathan C wspomniano .Zgodnie z dokumentacją nie może również zaczynać,
pg_
ponieważ jest zarezerwowana. Poza tym wygląda dość swobodnie.źródło
this-is schema
a nadal byłby to niepoprawna nazwa schematu.Prawidłowa odpowiedź to ta dostarczona przez gsiems. Chciałbym jednak zauważyć, że PostgreSQL ma zasady dotyczące cytowanych identyfikatorów, o których warto pamiętać. „Cytowane identyfikatory mogą zawierać dowolny znak, z wyjątkiem znaku z kodem zero. (Aby dołączyć podwójny cudzysłów, napisz dwa podwójne cudzysłowy.)” ... Istnieją również pewne ograniczenia dotyczące przypadków, które możesz chcieć zobaczyć.
Jeśli więc chcesz podać swoje identyfikatory, możesz użyć dowolnego znaku (z wyjątkiem \ 0). Ale jeśli nie cytujesz swoich identyfikatorów, musisz przestrzegać zasad przedstawionych na tej stronie.
Chciałem zwrócić na to uwagę głównie dlatego, że wcześniej mnie ugryzł, zwłaszcza zasady dotyczące wielkości liter w niecytowanych identyfikatorach (a nazwy schematów liczą się jako identyfikatory).
AKTUALIZACJA:
Jako przykład (nie dotyczy to w szczególności identyfikatorów schematów, ale ma również do nich zastosowanie):
To może być oczekiwane zachowanie dla tych, którzy mają doświadczenie z PostgreSQL (i być może standardami SQL), ale ktoś, kto jest nowy w PG i pochodzi z punktu widzenia innych serwerów baz danych (na przykład SQL Server lub Oracle), może natknąć się na to zachowanie i zastanawiam się, dlaczego brakuje właśnie utworzonej tabeli.
Być może niektóre podręczniki zalecają, aby nie używać cytowanych identyfikatorów, ale faktem jest, że cytowane identyfikatory są dostępne do użycia i mogą być używane, a ponadto wiele pakietów sprawia, że polityką jest zawsze używanie identyfikatorów cytowanych podczas tworzenia i uzyskiwania dostępu do relacji, które nie są całkowicie małe litery, np. PGAdmin III.
Na przykład jest to skrypt wygenerowany przez PGAdmin III podczas tworzenia tabeli za pomocą interfejsu użytkownika:
Dlatego jedynym sposobem, w jaki użytkownik może uzyskać dostęp do tej tabeli w zapytaniu, jest odwołanie się do jej cytowanego identyfikatora, tj
"TBLUSER"
. Próba uzyskania dostępu do tej tabeli w zapytaniu z niecytowanym identyfikatorem spowoduje, że nie uda się zlokalizować relacji, tjTBLUSER
.źródło