Представления в Oracle могут обновляться при определенных условиях. Это может быть сложно, и обычно не рекомендуется.
Из справочника по SQL 10g Oracle :
Примечания по обновляемым представлениям
Обновляемое представление - это то, которое вы можете использовать для вставки, обновления или удаления строк базовой таблицы. Вы можете создать представление с возможностью обновления по своей природе или создать триггер INSTEAD OF в любом представлении, чтобы сделать его обновляемым.
Чтобы узнать, можно ли и каким образом изменять столбцы изначально обновляемого представления, запросите представление словаря данных USER_UPDATABLE_COLUMNS. Информация, отображаемая этим представлением, имеет смысл только для изначально обновляемых представлений. Для того чтобы представление было по своей природе обновляемым, должны быть выполнены следующие условия:
- Каждый столбец в представлении должен соответствовать столбцу одной таблицы. Например, если столбец представления сопоставляется с выводом предложения TABLE (неопознанная коллекция), то представление не может быть обновлено по своей природе.
- Представление не должно содержать одну из следующих конструкций:
- Оператор множества
- оператор DISTINCT
- Совокупная или аналитическая функция
- Предложение GROUP BY, ORDER BY, MODEL, CONNECT BY или START WITH
- Выражение коллекции в списке SELECT
- Подзапрос в списке SELECT
- Подзапрос, обозначенный ТОЛЬКО ДЛЯ ЧТЕНИЯ
- Присоединения, за некоторыми исключениями, как описано в Руководстве администратора базы данных Oracle
Кроме того, если внутренне обновляемое представление содержит псевдоколонки или выражения, вы не можете обновить строки базовой таблицы с помощью инструкции UPDATE, которая ссылается на любой из этих псевдоколонок или выражений.
Если вы хотите, чтобы представление объединения было обновляемым, то должны выполняться все следующие условия:
- Оператор DML должен влиять только на одну таблицу, лежащую в основе объединения.
- Для оператора INSERT представление не должно создаваться WITH CHECK OPTION, и все столбцы, в которые вставляются значения, должны происходить из таблицы с сохранением ключа. Сохраняемая ключом таблица - это таблица, для которой каждый первичный ключ или значение уникального ключа в базовой таблице также уникально в представлении соединения.
- Для оператора UPDATE все обновленные столбцы должны быть извлечены из таблицы, сохраненной на ключе. Если представление было создано WITH CHECK OPTION, то объединение столбцов и столбцов, взятых из таблиц, на которые ссылаются более одного раза в представлении, должно быть экранировано от UPDATE.
- Для оператора DELETE, если в результате объединения получается более одной таблицы с сохранением ключей, Oracle Database удаляет из первой таблицы, указанной в предложении FROM, независимо от того, было ли представление создано с помощью CHECK OPTION.