Ответ 1
Я не думаю, что в системе есть что-то, что обеспечивает это с 9.3.4. Когда мне нужно указать дату последнего обновления, я добавлю столбец с именем "last_refresh" в запрос выбора в материализованном представлении, так как данные в материализованном представлении не изменятся, пока не будут обновлены.
Я также предпочитаю это по соображениям безопасности, так как вы можете не захотеть предоставить пользователю sql доступ к системным таблицам, если информация там хранится.
В зависимости от времени вы можете использовать либо:
-
CURRENT_DATE
-
now()
Только дата:
CREATE MATERIALIZED VIEW mv_address AS
SELECT *, CURRENT_DATE AS last_refresh FROM address;
С датой и временем:
CREATE MATERIALIZED VIEW mv_address AS
SELECT *, now() AS last_refresh FROM address;
Обновление 2017-02-17:
PostgreSQL версии 9.4+ теперь включает опцию CONCURRENTLY
. Если вы используете опцию REFRESH MATERIALIZED VIEW CONCURRENTLY
, помните о том, что @Smudge указано в комментариях. Это действительно будет проблемой только для больших и часто обновляемых наборов данных. Если ваш набор данных невелик или редко обновляется, вы должны быть в порядке.