Ну и скажи мне что должно вставится и куда вот на это
create view _для_особо_одарённых_
select a.f, b.f, a.f + c.f from a join b on a.id = b.id join c on b.id = c.id
По моей логике - то что в единственном триггере INSTEAD OF прописано.
Я вчера когда в трекер писал - хорошую аналогию придумал. Можно сравнить
таблицу с родительским объектом, а представление с её наследником.
Соответственно команда INSERT - это виртуальный метод объекта "таблица",
а триггер на представление - это метод, который перекрывает базовый
виртуальный метод.
Итого что мы имеем. Что базовый виртуальный метод может быть перекрыт
512-ю методами одновременно? Бред, не так ли? Однако по сути это делают
триггеры на представления. И почему то многие (тот же ДК, Дед) считают
EXECUTE STATEMENT злом, а вот эту вот кривизну - нет, она нормальная, с
ней всё в поряде и ничё не надо менять - нужно так и юзать.
И ещё я для вас специально повторю зачем мне захотелось в AFTER INSERT
присвоить заначение в NEW. Это только потому что во вьюху с клиента
запись вставляется с помощью INSERT ... RETURNING ID, и если я просто
сделаю вствку в таблицу (ПК назначается в триггере на таблицу), то на
клиента RETURNING мне вернёт ID = NULL.