Требуется ли явное обновление View в PostgreSQL?

«Требуется ли явное обновление View в PostgreSQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Обычные View (представления) не требуют явного обновления. Они являются виртуальными таблицами, основанными на SQL-запросе, и автоматически отражают актуальные данные из базовых таблиц при каждом обращении.

Когда требуется действие:

  1. При изменении схемы базовых таблиц (удаление/переименование столбцов) представление становится невалидным. Его необходимо пересоздать.
  2. Для материализованных представлений (MATERIALIZED VIEW) данные сохраняются физически на момент создания и требуют явного обновления командой REFRESH.

Примеры:

-- Создание обычного View
CREATE VIEW active_users AS
SELECT id, username FROM users WHERE is_active = true;
-- Данные всегда актуальны при SELECT * FROM active_users

-- Пересоздание View при изменении схемы
CREATE OR REPLACE VIEW active_users AS
SELECT id, username, email FROM users WHERE is_active = true;

-- Обновление материализованного View
REFRESH MATERIALIZED VIEW CONCURRENTLY user_stats;

Почему: Обычные View — это сохранённые запросы, а материализованные — это снимки данных для производительности, которые устаревают.