Представление может быть использовано с оператором update, как если бы этот оператор применялся к базовой таблице. Когда представление используется для модификации строк, содержимое лежащей в основе базовой таблицы изменяется фактически.
В примере 11.14 создается представление, которое затем используется для изменения таблицы workson.
Вы можете рассматривать обновление представления в примере 11.14, как если бы оператор update был преобразован к следующему эквивалентному оператору:
update works_on set job = null where job = 'Manager' and project_no = 'pi'
Опция with check option имеет то же самое логическое значение для оператора update, что и для оператора insert. В примере 11.15 показано использование опции with check option в операторе update.
В примере 11.15 Database Engine проверяет, будет ли измененное значение столбца budget давать истину в условии предложения where оператора select. Эта попытка изменения будет неудачной, потому что условие не выполняется - значение 93 000 не является большим, чем значение 100 000.
Изменение столбцов, лежащих в основе представления таблиц, нельзя выполнить, если соответствующее представление содержит одну из следующих возможностей:
♦ предложение from в определении представления включает две или более таблиц, и список столбцов содержит столбцы более чем из одной таблицы;
♦ столбец в представлении наследуется из агрегатной функции;
♦ оператор select в представлении содержит предложение group by или опцию distinct;
♦ столбец в представлении наследуется от константы или выражения.
В примере 11.16 показано представление, которое не может быть использовано для изменения значений строк в базовой таблице представления.
Представление vukpound в примере 11.16 не может использоваться с оператором update (так же, как и с оператором insert), потому что столбец budgetinpounds является вычисляемым с помощью арифметического выражения и не представляет оригинального столбца лежащей в основе представления таблицы.