В Postgres 9.5 я реализовал энергичное материализованное представление с триггерами upsert на UPDATE
(мне нужно пошаговое обновление, а встроенные материализованные представления не поддерживают это), похоже, это работает хорошо.
Но мне также нужно инициализировать эти таблицы на существующих БД, а иногда и обрезать и перестраивать их;Мне нужен встроенный REFRESH MATERIALIZED VTEW
.Я мог бы дублировать запросы upsert в триггерах, модифицируя специфичный для триггера код, но мне не нравится дублирующий код.
Я обнаружил, что выполнение no-op UPDATE
в исходной таблице (таблицах) триггера
UPDATE source_table SET id = id;
действительно запускает мои триггеры и, таким образом, обновляет представление по мере необходимости.
Я раньше не сталкивался с подобным «сенсорным» запросом и беспокоюсь о том, что он может быть хрупким - теперь Postgres ведет себя так, но он нестандартен и изменится в 9.6.Оправданное беспокойство?