@GeraldIstar
Frontend

PostgreSQL не видит запись с нужным ключом

Есть три таблицы:
CREATE TABLE objects
(
  id bigint NOT NULL DEFAULT nextval('objects_seq'::regclass),
  create_date timestamp with time zone NOT NULL DEFAULT now(), -- Дата создания объекта
  edit_date timestamp with time zone NOT NULL DEFAULT now(), -- Дата последнего изменения объекта
  public boolean NOT NULL DEFAULT false, -- Является ли объект публичным (общедоступным)
  is_delete boolean NOT NULL DEFAULT false, -- Флаг того, что объект удален
  CONSTRAINT objects_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=TRUE
);


CREATE TABLE users
(
-- Унаследована from table objects:  id bigint NOT NULL DEFAULT nextval('objects_seq'::regclass),
-- Унаследована from table objects:  create_date timestamp with time zone NOT NULL DEFAULT now(),
-- Унаследована from table objects:  edit_date timestamp with time zone NOT NULL DEFAULT now(),
-- Унаследована from table objects:  public boolean NOT NULL DEFAULT false,
-- Унаследована from table objects:  is_delete boolean NOT NULL DEFAULT false,
  login character varying NOT NULL, -- Логин пользователя
  password character varying NOT NULL, -- Пароль
  expiration_date timestamp with time zone, -- Дата истечения
  first_name character varying NOT NULL,
  last_name character varying NOT NULL,
  middle_name character varying,
  phones bigint[],
  emails character varying[],
  active boolean NOT NULL DEFAULT true,
  CONSTRAINT users_pkey PRIMARY KEY (id),
  CONSTRAINT users_login_key UNIQUE (login)
)
INHERITS (objects)
WITH (
  OIDS=TRUE
);

CREATE TABLE favorite_objects
(
  id bigint NOT NULL DEFAULT nextval('favorite_objects_seq'::regclass),
  user_id bigint NOT NULL,
  favorite_object_id bigint NOT NULL,
  CONSTRAINT favorite_objects_pkey PRIMARY KEY (id),
  CONSTRAINT favorite_objects_favorite_object_id_fkey FOREIGN KEY (favorite_object_id)
      REFERENCES objects (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT favorite_objects_user_id_fkey FOREIGN KEY (user_id)
      REFERENCES users (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=TRUE
);


При попытке добавить запись в favorite_objects - говорит, что в таблице objects нет записи с таким id. Хотя он там есть. В чем проблема - ума не приложу.
  • Вопрос задан
  • 2766 просмотров
Решения вопроса 1
@GeraldIstar Автор вопроса
Frontend
Проблема решена. Подобный вопрос уже был, просто я сначала подумал, что не мой случай.
Проблема описывается в мануале, в разделе 5.8.1. Caveats
www.postgresql.org/docs/9.3/static/ddl-inherit.html

Суть заключается в следующем: при добавлении записи в таблицу-потомок, нельзя ссылаться на эту запись в таблице-родителе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы