Триггеры Postgres и неоперационные обновления - PullRequest
0 голосов
/ 21 ноября 2018

В Postgres 9.5 я реализовал энергичное материализованное представление с триггерами upsert на UPDATE (мне нужно пошаговое обновление, а встроенные материализованные представления не поддерживают это), похоже, это работает хорошо.

Но мне также нужно инициализировать эти таблицы на существующих БД, а иногда и обрезать и перестраивать их;Мне нужен встроенный REFRESH MATERIALIZED VTEW.Я мог бы дублировать запросы upsert в триггерах, модифицируя специфичный для триггера код, но мне не нравится дублирующий код.

Я обнаружил, что выполнение no-op UPDATE в исходной таблице (таблицах) триггера

UPDATE source_table SET id = id;

действительно запускает мои триггеры и, таким образом, обновляет представление по мере необходимости.

Я раньше не сталкивался с подобным «сенсорным» запросом и беспокоюсь о том, что он может быть хрупким - теперь Postgres ведет себя так, но он нестандартен и изменится в 9.6.Оправданное беспокойство?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...