PostgreSQL и pgadmin3.exe - PullRequest
       4

PostgreSQL и pgadmin3.exe

1 голос
/ 31 марта 2011

Я пытаюсь начать играть с postgres и обнаружил очень странную вещь, я создал таблицу с использованием pgadminIII с именем testtable и добавил пару столбцов, после чего написал следующий запрос в редакторе запросов

SELECT * from testtable;

он ответил, что таблица с таким именем не найдена, затем я попытался

select * from "testtable"

с кавычками (позже одна) это сработало, затем я отбросил таблицу и создал таблицу с помощью редактора сценариев, с тем же именем, убедившись, что вокруг имени нет кавычек, затем оба запроса начали работать, я не могу понять что именно это означает, даже если я напишу «teablename» в кавычках оператора создания таблицы, они не должны становиться частью имени таблицы.

Кроме того, как я могу убедиться при использовании графического пользовательского интерфейса pgAdmin, что все объекты создаются без кавычек (конечно, если из-за этого возникла проблема)?

Обновление: информация об окружающей среде

OS => Windows Server 2008 x64, Postgres => 9.0.3-2 x64, pgAdmin =>> Версия 1.12.2 (22 марта 2011 г., ред .:> REL-1_12_2)

1 Ответ

1 голос
/ 01 апреля 2011

Вы впервые использовали диалог новой таблицы?Вы не должны использовать кавычки в диалоге, так как pgAdmin вставит все необходимые кавычки.

Редактировать Сегодня я обнаружил кое-что странное и может объяснить, что с вами случилось.

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

CREATE TABLE TestTable ( ... );

Ваша таблица будет называться testtable. Что произойдет, когда вы начнете запрашивать таблицу:

SELECT * FROM TestTable; -- succeeds looks for testtable
SELECT * FROM testtable; -- succeeds
SELECT * FROM "TestTable"; -- fails because case doesn't match

Теперь, если вы сделали:

CREATE TABLE "TestTable" ( ... );

Ваша таблица на самом деле будет называться TestTable с сохранением регистра и результатом будет

SELECT * FROM TestTable; -- fails looks for testtable
SELECT * FROM testtable; -- fails
SELECT * FROM "TestTable"; -- succeeds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...