Re: Creating foreign key constraint to child table?

Поиск
Список
Период
Сортировка
От Allan Engelhardt
Тема Re: Creating foreign key constraint to child table?
Дата
Msg-id 3B6D4409.64B17684@cybaea.com
обсуждение исходный текст
Ответ на Creating foreign key constraint to child table?  (Allan Engelhardt <allane@cybaea.com>)
Список pgsql-sql
I obviously haven't had enough coffee yet... :-)  The following script works as expected.

drop database test;
create database test;
\c test
create table foo (id integer primary key);
create table bar () inherits (foo);
create unique index bar_id_idx ON bar(id);
create table baz (bar integer,      constraint fk_bar foreign key (bar) references bar(id));
insert into foo values (1);
insert into bar values (2);
insert into baz values (2);
insert into baz values (1); -- fails

Sorry.

   --- Allan.

I wrote:

> I would like to create a FOREIGN KEY constraint to an inherited column, like:
>
>     test=# CREATE TABLE foo(id INTEGER PRIMARY KEY);
>     test=# CREATE TABLE bar() INHERITS (foo);
>     test=# CREATE TABLE baz (bar INTEGER, CONSTRAINT fk_bar FOREIGN KEY (bar) REFERENCES bar(id));
>     ERROR:  UNIQUE constraint matching given keys for referenced table "bar" not found
>
> This obvioulsy doesn't work.  I *can* create a FOREIGN KEY contraint to the parent table:
>
>     test=# create table baz(bar integer, constraint fk_bar foreign key (bar) references foo(id));
>     NOTICE:  CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
>     CREATE
>
> but this is not exactly what I want: I need to ensure that baz.bar is a bar and not just any foo.
>
> Do I need to write my own INSERT/UPDATE triggers on baz to check the tableoid, or is there a nice way to do this?
>
> Any examples on how to do this?  In particular, do I need to do a SELECT on pg_class for every INSERT / UPDATE in
baz,just to get the tableoid for bar ?  There *is* an index on pg_class.relname but still...
 
>
>     --- Allan.



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

Предыдущее
От: Allan Engelhardt
Дата:
Сообщение: Creating foreign key constraint to child table?
Следующее
От: Stephan Szabo
Дата:
Сообщение: Re: Creating foreign key constraint to child table?