Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется запрос / 8 сообщений из 8, страница 1 из 1
20.03.2007, 08:44
    #34401753
aleksandy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
В базе данных создал такие таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
CREATE TABLE "relativesType" (
  id int4 NOT NULL DEFAULT nextval('"relativesType_id_seq"'::regclass),
  "relativeName" char( 30 ) NOT NULL,
  CONSTRAINT pk_relative PRIMARY KEY (id)
) 

CREATE TABLE members (
  id int4 NOT NULL DEFAULT nextval('members_id_seq'::regclass),
  account_id int4 NOT NULL,
  "memberNo" int2 NOT NULL,
  family char( 20 ) NOT NULL,
  name char( 20 ) NOT NULL,
  "fatherName" char( 20 ) NOT NULL,
  birthday date NOT NULL,
  sex bool NOT NULL,
  "relative" int4 NOT NULL,
  inn int8,
  "pensionPolicy" int8,
  address char( 11 ) NOT NULL,
  "birthDocNo" int4,
  "birthDocDate" date,
  nationality int4,
  education int4,
  "educationType" int4,
  "regDate" date NOT NULL,
  "prevAddress" char( 11 ),
  CONSTRAINT pk_members PRIMARY KEY (id),
  CONSTRAINT fk_account_id FOREIGN KEY (account_id)
      REFERENCES accounts (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "fk_relativeType" FOREIGN KEY ("relative")
      REFERENCES "relativesType" (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE SET NULL
)

Запихал в relativesType некоторое количество записей (~10). Пытаюсь сделать простой запрос:
Код: plaintext
select * from relativesType

Выдается такая ошибка:
ERROR: relation "relativestype" does not exist
...
Рейтинг: 0 / 0
20.03.2007, 09:08
    #34401789
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
Заключив название в двойные кавычки, Ты создал регистрозависимое название таблицы (к полям это тоже имеет отношения - все названия полей, что при создании были указаны в двойных кавычках, будут регистрозависимыми), соответственно нужно эту регистрозависимость поддерживать и в запросах.
Если написать просто вот так:
Код: plaintext
select * from relativesType
, то сервер будет искать таблицу вот с таким именем: RELATIVESTYPE
При этом в системном словаре данных таблица имеет имя relativesType. Чтобы теперь к ней обратиться, нужно писать запрос вот так:
Код: plaintext
select * from "relativesType"
.

Либо создать таблицу нормально - указывая имена таблицы и её полей без двойных кавычек.
...
Рейтинг: 0 / 0
20.03.2007, 09:42
    #34401852
aleksandy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
Бабичев СергейЗаключив название в двойные кавычки, Ты создал регистрозависимое название таблицы (к полям это тоже имеет отношения - все названия полей, что при создании были указаны в двойных кавычках, будут регистрозависимыми), соответственно нужно эту регистрозависимость поддерживать и в запросах.
Если написать просто вот так:
Код: plaintext
select * from relativesType
, то сервер будет искать таблицу вот с таким именем: RELATIVESTYPE
При этом в системном словаре данных таблица имеет имя relativesType. Чтобы теперь к ней обратиться, нужно писать запрос вот так:
Код: plaintext
select * from "relativesType"
.

Либо создать таблицу нормально - указывая имена таблицы и её полей без двойных кавычек.

Спасибо за разъяснение. Просто таблицы я создавал при помощи pgAdmin и запросы на создание таблиц взял оттуда же. А можно ли как-нибудь заставить pgAdmin создавать таблицы так, чтобы в кавычки не заключалось ни чего (ни имена таблиц, ни имена полей)?

Заранее благодарен...
...
Рейтинг: 0 / 0
20.03.2007, 09:53
    #34401873
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
aleksandyА можно ли как-нибудь заставить pgAdmin создавать таблицы так, чтобы в кавычки не заключалось ни чего (ни имена таблиц, ни имена полей)?А ты внимательно посмотри на имена объектов, заключенных в кавычки. Выводы сделать сам сможешь?

З.Ы.
Подсказка: пиши все имена однообразно, без выделения некоторых символов в верхний регистр :)
И не используй зарезервированные слова в качестве наименований объектов
...
Рейтинг: 0 / 0
20.03.2007, 11:27
    #34402227
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
Бабичев СергейЕсли написать просто вот так:
Код: plaintext
select * from relativesType
, то сервер будет искать таблицу вот с таким именем: RELATIVESTYPEПочти верно. НО.
Вы видимо спутали PostgreSQL с ораклом.

PostgreSQL будет искать таблицу с именем, приведенным _в нижний_ регистр.
и вообше то фак уже месяц как пишецо и висит под носом.
...
Рейтинг: 0 / 0
20.03.2007, 11:36
    #34402264
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
4321Почти верно. НО.
Вы видимо спутали PostgreSQL с ораклом. Каюсь, грешен :)


4321и вообше то фак уже месяц как пишецо и висит под носом.Это замечание мне или автору топика?
...
Рейтинг: 0 / 0
20.03.2007, 12:49
    #34402574
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
Бабичев Сергей 4321и вообше то фак уже месяц как пишецо и висит под носом.Это замечание мне или автору топика?гм. А это важно?
дабы никого не задеть - можете считать, что это театральный "шопот в зал"
...
Рейтинг: 0 / 0
20.03.2007, 13:03
    #34402625
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняется запрос
4321гм. А это важно?Собственно - нет.

4321дабы никого не задеть - можете считать, что это театральный "шопот в зал" Апарт , то бишь :)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется запрос / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]