Можно ли модифицировать представления (изменять их значения)?
Очевидно, что это не всегда возможно даже теоретически. В реальности модификация представлений может означать лишь модификацию физических таблиц. Так, например, добавить запись в представление «Казанские покупатели» означает в действительности добавление записи в таблицу «Покупатели» со значением поля city=’Казань’. Изменение значений полей появившихся при этом записей снова означает модификацию исходной записи. Очевидно, подобное, обратное по отношению к выборке преобразование, существует не всегда.
create view Average as
select city, avg(credit) as Avg
from Customer
group by city
update Average set Avg=Avg+100;
Даже если такое преобразование существует теоретически, оно должно быть реализуемо практически. ANSI предлагает считать модифицируемыми представления, которые базируются лишь на одной базовой таблице (слишком сильное допущение, не требуемое в реальных системах). Все базовые таблицы должны иметь первичные ключи; все они должны быть включены в выборку.
В представлениях недопустимы агрегатные функции group by, having, distinct. Проще говоря, каждая запись базовой таблицы должна прождать не более одной записи представлений. Список выборки не должен ссылаться на выражения, а лишь на имена полей.
Замечание. Модифицируемые представления должны ссылаться только на модифицируемые.
Реальные версии SQL могут накладывать и другие ограничения.