показывает пользователю только те строки таблицы STUDENT, для которых
значение поля CITY равно ‘Москва ’.
5.5.4. Операции модификации в представлениях,
маскирующих строки
Каждая включенная в представление строка доступна для вывода,
обновления и удаления. Любая допустимая для основной таблицы строка
вставляется в базовую таблицу независимо от ее включения в представление.
При этом может возникнуть проблема , состоящая в том, что значения,
введенные пользователем в базовую таблицу через представление, значений,
будут отсутствовать в представлении, оставаясь при этом в базовой таблице.
Рассмотрим такой случай:
CREATE VIEW HIGH_RATING AS
SELECT *
FROM UNIVERSITY
WHERE RATING = 300;
Это представление является обновляемым. Оно просто ограничивает
доступ пользователя к определенным столбцам и строкам в таблице
UNIVERSITY. Предположим, необходимо вставить с помощью команды
INSERT следующую строку:
INSERT INTO HIGH_RATING
VALUES (180, ‘Новый университет ’ , 200, ‘Воронеж ’ );
Команда INSERT допустима в этом представлении. С помощью
представления HIGH_RATING строка будет вставлена в базовую таблицу
UNIVERSITY. Однако , после появления этой строки в базовой таблице, из
самого представления она исчезнет , поскольку значение поля RATING не
равно 300, и, следовательно, эта строка не удовлетворяет условию
предложения WHERE для отбора строк в представление. Для пользователя
такое исчезновение только что введенной строки является неожиданным.
Действительно, не понятно, почему после ввода строки в таблицу ее нельзя
увидеть и , например , тут же удалить. Тем более, что пользователь вообще
может не знать – работает он в данный момент с базовой таблицей или с
таблицей - представлением .
Аналогичная ситуация возникнет , если в какой-либо существующей