Foreign Key to an (abstract?) Parent Table

Поиск
Список
Период
Сортировка
От Alessandro Gagliardi
Тема Foreign Key to an (abstract?) Parent Table
Дата
Msg-id CAAB3BBLq2y9rN7GAynzyosqioQWM8cHoYhQY8KK-GU4dHFEW-w@mail.gmail.com
обсуждение исходный текст
Ответы Re: Foreign Key to an (abstract?) Parent Table  (Bartosz Dmytrak <bdmytrak@eranet.pl>)
Список pgsql-novice
I have
CREATE TABLE moments
(
  moment_id character(24) NOT NULL DEFAULT to_char(now(), 'JHH24MISSUS'::text),
  block_id character(24) NOT NULL,
  inserted timestamp without time zone NOT NULL DEFAULT now(),
  CONSTRAINT moments_pkey PRIMARY KEY (moment_id )
)
which is the parent of a bunch of other tables like
CREATE TABLE music
(
  track_id character(24),
  CONSTRAINT music_pkey PRIMARY KEY (moment_id )
)
INHERITS (moments)
and
CREATE TABLE thoughts
(
  body text,
  CONSTRAINT thought_pkey PRIMARY KEY (moment_id )
)
INHERITS (moments)
In fact, the moments table itself is empty. (In OOP terms, I suppose it would be "abstract".) However, moment_id should be unique across all of the tables that inherit moments
But this question isn't about inheriting a primary key (which I know PostgreSQL doesn't do). Rather, it is about creating a foreign key. You see, I also have
CREATE TABLE seen_its
(
  user_id character(24) NOT NULL,
  moment_id character(24) NOT NULL,
  created timestamp without time zone,
  inserted timestamp without time zone DEFAULT now(),
  CONSTRAINT seen_its_pkey PRIMARY KEY (user_id , moment_id )
)
and what I would like is for moment_id in seen_its to be a foreign key that applies to all of the tables that inherit from moments. I tried
ALTER TABLE seen_its ADD CONSTRAINT seen_it_moment_id FOREIGN KEY (moment_id) REFERENCES moments (moment_id)
   ON UPDATE NO ACTION ON DELETE NO ACTION;
CREATE INDEX fki_seen_it_moment_id ON seen_its(moment_id);
but, as you might imagine, it fails because none of the moment_ids in seen_its are in moments, they're in music and thoughts and so on.
Is there any way to make this work?
Thank you in advance!
-Alessandro Gagliardi

В списке pgsql-novice по дате отправления:

Предыдущее
От: Alessandro Gagliardi
Дата:
Сообщение: execute many for each commit
Следующее
От: Tom Lane
Дата:
Сообщение: Re: execute many for each commit