Почему я не могу удалить строку в Postgresql-Pgadmin, когда я уже следовал формату?

#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
  

Настоятельно рекомендуется полностью избегать этих страшных идентификаторов в кавычках. Поэтому никогда не используйте двойные кавычки при создании таблиц, тогда вам никогда не понадобится использовать их при работе с таблицами