Вот пример.
Сначала мы создаем тестовую таблицу:
CREATE TABLE test (a integer, b varchar, primary key (a));
Затем мы создаем представление:
CREATE OR REPLACE VIEW test_view AS SELECT * FROM test;
Далее создается правило обновления:
CREATE OR REPLACE RULE rl_test_view_update AS
ON UPDATE TO test_view DO INSTEAD
UPDATE test SET a = NEW.a, b = NEW.b
WHERE test.a = old.a AND test.b = old.b;
И, наконец, вот правило вставки:
CREATE OR REPLACE RULE rl_test_view_insert AS
ON INSERT TO test_view DO INSTEAD
INSERT INTO test VALUES (NEW.a, NEW.b)
RETURNING test.*;
Теперь вы можете вставить некоторые тестовые данные:
INSERT INTO test_view (a, b) VALUES (1,'John Doe') RETURNING a;
и проверьте вставленные кортежи:
SELECT * FROM test_view;