Я попытался создать таблицу с именем 15909434_user
с синтаксисом, как показано ниже:
CREATE TABLE 15909434_user ( ... )
Это, конечно, произвело бы ошибку. Затем, после того, как я попытался немного изучить Google, я нашел здесь хорошую статью которая описывает:
Когда вы создаете объект в PostgreSQL, вы даете этому объекту имя. Каждая таблица имеет имя, каждый столбец имеет имя и т.д. PostgreSQL использует один тип данных для определения всех имен объектов: тип
name
.Значение типа
name
представляет собой строку из 63 или менее символов. Имя должно начинаться с буквы или подчеркивания; остальная часть строки может содержать буквы, цифры и символы подчеркивания....
Если вы обнаружите, что вам нужно создать объект, который не соответствует этим правилам, вы можете заключить его в двойные кавычки. Обозначение имени в кавычках создает цитируемый идентификатор. Например, вы можете создать таблицу с именем "
3.14159
" - нужны двойные кавычки, но на самом деле они не являются частью имени (то есть они не сохраняются и не учитываются с 63-символьным лимитом)....
Хорошо, теперь я знаю, как это решить, используя этот синтаксис (ставя двойную кавычку в имя таблицы):
CREATE TABLE "15909434_user" ( ... )
Вы можете создать имя таблицы или столбца, такое как "15909434_user"
, а также user_15909434
, но не можете создавать имя таблицы или столбца с помощью numeric без использования двойных кавычек.
Итак, мне интересно узнать причину этого (за исключением конвенции). Почему это соглашение применяется? Следует избегать чего-то вроде ограничения синтаксиса или по другой причине?
Заранее благодарим за внимание!