Другой подход - создать отдельный рабочий стол и показать его. У него не будет значков.
Из документов http://www.postgresql.org/docs/8.4/static/rules.html
Он (система правил) изменяет запросы на учитывают правила, и затем передает измененный запрос планировщику запросов для планирования и выполнения
, чтобы он сначала перезаписывал запросы, ничего не выполняя.
вы можете заставить его работать, если не вставляете сразу несколько записей:
create or replace rule ct_i_children1 as
on insert to Children1
do instead (
insert into Parents(id, attribute1, type)
values(nextval('parents_id_seq'), new.attribute1, 'Child1');
insert into Partial_Children1(id, attribute2, type)
values(currval('parents_id_seq'), new.attribute2, 'Child1');
);
Затем вы можете сделать:
insert into Children1 (attribute1, attribute2) values ('a1', 'a2');
insert into Children1 (attribute1, attribute2) values ('b1', 'b2');
но не
insert into Children1 (attribute1, attribute2)
values ('a1', 'a2'),
('b1', 'b2');
Так что вам действительно не следует использовать систему правил с хитрыми вызовами currval ().
Также обратите внимание на комментарии на этих страницах:
Еще один совет: поддержка в списке рассылки postgresql так же превосходен, как и сам движок базы данных!
И между прочим: знаете ли вы, что postgresql имеет встроенную поддержку наследования?
Резюме: вам следует использовать триггеры или избегать вставки нескольких строк!
Правила сделают это за вас - они переписывают запрос перед его выполнением.
Пока у вас есть реальная таблица для базы (Children1), я думаю, вы сможете сделать то же самое с ТРИГГЕРОМ вместо ПРАВИЛА.