ПРОВЕРКА ЗНАЧЕНИЙ ПОМЕЩАЕМЫХ В ПРЕДСТАВЛЕНИЕ
Другой вывод о модифицируемости представления тот, что вы можете вводить значения которые
" проглатываются " (swallowed) в базовой таблице. Рассмотрим такое представление:
CREATE VIEW Highratings AS SELECT
cnum, rating FROM Customers WHERE rating = 300;
Это - представление модифицируемое. Оно просто ограничивает ваш доступ к определенным строкам и
столбцам в таблице. Предположим, что вы вставляете (INSERT) следующую строку:
INSERT
INTO Highratings VALUES (2018, 200);
Это - допустимая команда INSERT в этом представлении. Строка будет вставлена, с
помощью представления Highratings, в таблицу Заказчиков. Однако когда она появится там, она
исчезнет из представления,
поскольку значение оценки не равно 300. Это - обычная проблема. Значение 200 может быть
просто напечатано, но теперь
строка находится уже в таблице Заказчиков где вы не можете даже увидеть ее. Пользователь не
сможет понять, почему
введя строку он не может ее увидеть, и будет неспособен при этом удалить ее. Вы можете быть
гарантированы от
модификаций такого типа с помощью включения WITH CHECK OPTION (С ОПЦИЕЙ ПРОВЕРКИ) в
определение
представления. Мы можем использовать WITH CHECK OPTION в определении представления Highratmgs.
CREATE VIEW
Highratings AS SELECT cnum, rating FROM Customers WHERE rating = 300 WITH CHECK OPTION;
Вышеупомянутая вставка
будет отклонена. WITH CHECK OPTION - производит действие все_или_ничего (all-or-not- hing).
Вы помещаете его в
определение представления, а не в команду DML, так что или все команды модификации в
представлении будут проверяться, или ни одна не будет проверена. Обычно вы хотите
использовать опцию проверки, используя ее в определении
представления, что может быть удобно. В общем, вы должны использовать эту опцию, если у вас
нет причины, разрешать
представлению помещать в таблицу значения, которые он сам не может содержать.