Inheritance Question

Поиск
Список
Период
Сортировка
От Neil Burrows
Тема Inheritance Question
Дата
Msg-id DEEEKNCFJIHBMOLPKIHFAEOBCBAA.nburrows@ssh.com
обсуждение исходный текст
Ответы Re: Inheritance Question  (Stephan Szabo <sszabo@megazone23.bigpanda.com>)
Список pgsql-general
Hi,

A quick question about Inheritance here.

If a table has FOREIGN or PRIMARY KEYs in it, and then another table which
inherits this table is created, the inherited table will not have the KEY
constraints.  Is this correct?

In the documentation it is does not explicitly say whether constraints are
inherited or not so I just wanted to check (it might also be worth adding it
to the docs for dumb people like me :-)

I've included an example below in case my explanation is not clear.

This is actually the way I want it to work for keeping a history, but I'm
just checking that this is the correct behaviour and it's not going to be
"fixed" in a future version (which would mean I would have to rewrite the
scripts).

Thanks in advance,

---[  Neil Burrows  ]-----------------------------------------------------
E-mail: neil.burrows@ssh.com      |   SSH Communication Security Corp.
Web   : http://www.ssh.com/       |     Keeping the Internet secure
-----< Any views expressed are not necessarily those of my employer >-----




CREATE TABLE ref(
id    INT4 PRIMARY KEY,
val   VARCHAR(128)
);

CREATE TABLE parent(
id    INT4 PRIMARY KEY,
ref   INT4,
val   VARCHAR(128),
FOREIGN KEY (ref) REFERENCES ref(id)
);

CREATE TABLE parent_history(
) inherits(parent);

CREATE FUNCTION backup_parent () RETURNS OPAQUE as '
BEGIN
  INSERT INTO parent_history SELECT * FROM parent WHERE id = OLD.id;
  return OLD;
END; '
LANGUAGE 'plpgsql';

CREATE TRIGGER parent_trigger
BEFORE DELETE OR UPDATE ON parent FOR EACH ROW
EXECUTE PROCEDURE backup_parent ();


INSERT INTO ref VALUES (1, 'test ref');
INSERT INTO parent VALUES (1, 1, 'test parent');

-- This should fail to to integrety check
DELETE FROM ref;

DELETE FROM parent;

-- This will no longer fail
DELETE FROM ref;

-- Show value in history
SELECT * FROM parent_history;


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

Предыдущее
От: Evelio Martinez
Дата:
Сообщение: pg_user, pg_group and arrays
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Multiple triggers/rules