К представлениям могут быть обращены не только поисковые, но и корректирующие запросы. В последнем случае операции, применяемые к представлению, должны быть отражены в базовых таблицах. Поскольку представления в принципе могут быть созданы с использованием разнообразных операторов SELECT (например, обеспечивающих соединение нескольких таблиц или использующих групповые операции или иные вычисляемые атрибуты), то это может вызвать определенные проблемы при выполнении обновления. Таким образом, не все представления являются обновляемыми (изменяемыми).
Чтобы не была нарушена целостность БД, должны соблюдаться следующие ограничения:
· нельзя корректировать данные представлений, полученных на основе нескольких базовых таблиц (в некоторых СУБД это ограничение менее жесткое);
· при определении представления не должно использоваться со единение таблицы «сама с собой»;
· нельзя манипулировать данными представлений, полученных на основе оператора группирования (GROUP BY);
· нельзя корректировать вычисляемые поля;
· представление должно содержать один и только один запрос, т.е. не допускается использование UNION, EXCEPT, INTERSECT;
· включающий запрос представления не может содержать предложение DISTINCT;
· ни на один столбец нельзя ссылаться в SELECT более одного раза.
При описании представления в качестве исходных для него могут использоваться не только базовые таблицы, но и другие представления. Представление, базирующееся на другом представлении, будет обновляемым, если исходное является обновляемым, и для вновь создаваемого представления будут соблюдены указанные выше условия.
Все эти ограничения вызваны тем, что в противном случае трудно (а иногда и невозможно) обеспечить целостность данных в БД, поскольку неясно, как отобразить операцию корректировки в соответствующие базовые таблицы.
предыдущаяследующая