Я не могу найти документацию, которая описывает допустимые форматы имени схемы PostgreSQL. Я знаю, что имя схемы не может:
- начать с числа
- есть пробелы
- начать с
pg_
Что еще? Куда мне смотреть?
postgresql
Рамон Тайаг
источник
источник
pg_
подчеркивание в этой связи, как Nathan C упомянуто .Согласно документации , он также не может начинаться с
pg_
того, что зарезервирован. Кроме того, это выглядит довольно свободно.источник
this-is schema
и это все еще было бы недопустимым именем схемы.Правильный ответ предоставлен gsiems. Тем не менее, я хочу отметить, что в PostgreSQL есть правила для идентификаторов в кавычках, которые вы можете иметь в виду. «Идентификаторы в кавычках могут содержать любой символ, кроме символа с нулевым кодом. (Чтобы включить двойные кавычки, напишите две двойные кавычки.)» ... Существуют также некоторые ограничения на случай, на который вы можете захотеть посмотреть.
Поэтому, если вы собираетесь заключать в кавычки свои идентификаторы, тогда вы можете использовать любой символ, который хотите (за исключением \ 0). Но если вы не цитируете свои идентификаторы, вы должны следовать правилам, изложенным на этой странице.
Я хотел указать на это главным образом потому, что это меня укусило раньше, особенно правила, касающиеся регистра в не заключенных в кавычки идентификаторах (и имена схем считаются идентификаторами).
ОБНОВИТЬ:
В качестве примера (не относится конкретно к идентификаторам схемы, но в равной степени применимо к ним):
Это может быть ожидаемым поведением для тех, кто имеет опыт работы с PostgreSQL (и, возможно, стандартами SQL), но тот, кто не знаком с PG и работает с точки зрения других серверов баз данных (например, SQL Server или Oracle), может столкнуться с этим поведением и Интересно, почему таблица, которую они только что создали, отсутствует.
Возможно, некоторые руководства рекомендуют не использовать заключенные в кавычки идентификаторы, но в том-то и дело, что заключенные в кавычки идентификаторы доступны для использования и могут быть использованы, и, кроме того, многие пакеты устанавливают политику всегда использовать заключенные в кавычки идентификаторы при создании и доступе к отношениям, которые не являются полностью строчные, например, PGAdmin III.
Например, это сценарий, сгенерированный PGAdmin III при создании таблицы через пользовательский интерфейс:
Таким образом, единственный способ , которым пользователь может получить доступ к этой таблице в запросе со ссылки на его цитируемый идентификатор, то есть
"TBLUSER"
. Попытка получить доступ к этой таблице в запросе с не заключенным в кавычки идентификатором приведет к невозможности найти отношение, тTBLUSER
. Е.источник