#postgresql #pgadmin-4 #quoted-identifier
#postgresql #pgadmin-4 #идентификатор в кавычках
Вопрос:
У меня есть таблица Department
с 2 столбцами, DEPT_CODE
PK и DEPT_NAME
и оба имеют типы данных name
. Я вставил:
INSERT INTO public."Department"("DEPT_CODE", "DEPT_NAME")
VALUES ('CIS', 'Computer Info Systems');
затем я хочу удалить ее, поэтому я написал:
DELETE FROM public."Department"
WHERE 'DEPT_CODE' = 'CIS';
Это не привело к удалению строки (я использовал сценарий удаления, предоставленный pgadmin). Если я не использую кавычки для 'DEPT_CODE'
, это выдало ошибку:
ERROR: column "dept_code" does not exist
LINE 2: WHERE DEPT_CODE = 'CIS';
Idk что делать. Каждый учебник, который я вижу, казалось, мог удалять просто отлично, почему не мой? Я впервые использую pgadmin-postgres.
Ответ №1:
Как указано в руководстве, идентификаторы (имена столбцов и таблиц) должны быть заключены в двойные кавычки. Одинарные кавычки предназначены только для строковых констант.
И поскольку вы использовали страшные двойные кавычки для имен таблиц и столбцов при создании таблицы, теперь вам нужно использовать их всегда:
DELETE FROM public."Department"
WHERE "DEPT_CODE" = 'CIS';
^ ^
| column name | string constant
Настоятельно рекомендуется полностью избегать этих страшных идентификаторов в кавычках. Поэтому никогда не используйте двойные кавычки при создании таблиц, тогда вам никогда не понадобится использовать их при работе с таблицами