Контроль над обновлением представлений (предложение WITH CHECK OPTION)
Если представление создается посредством запроса с предложением WHERE, то в представлении будут видны только строки, удовлетворяющие условию отбора. Остальные строки в исходной таблице присутствуют, но в представлении их нет. Например, представление Minsk, которое уже рассматривалось ранее в настоящем разделе, содержит только строки таблицы STAFF с определенными значениями в столбце Bno .
Это представление является обновляемым как по стандарту ANSI/ISO, так и в большинстве коммерческих СУБД. В него можно добавить информацию о новом служащем посредством инструкции INSERT:
СУБД добавит новую строку в исходную таблицу STAFF; она будет видна также в представлении Minsk. Однако если воспользоваться следующей инструкцией для добавления строки в представление Minsk:
и сразу после неё выполнить запрос: select * from Minsk, то только что добавленная строка в ней будет отсутствовать. Тот факт, что в результате выполнения инструкции INSERT или UPDATE из представления исчезают строки, в лучшем случае вызывает замешательство. SQL позволяет организовать своеобразный контроль целостности представлений путем создания их с режимом контроля. Данный режим задается в инструкции CREATE VIEW посредством предложения WITH CHECK OPTION:
create view Minsk as
select * from staff
where bno in (select bno
from branch
where city = ‘Минск’)
with check option;
Когда для представления установлен режим контроля, СУБД автоматически проверяет каждую операцию INSERT или UPDATE, выполняемую над представлением, чтобы удостовериться в том, что полученные в результате строки удовлетворяют условиям отбора в определении представления. Если добавляемая или обновляемая строка не удовлетворяет этим условиям, то выполнение инструкции INSERT или UPDATE завершается ошибкой; другими словами, операция не выполняется.
В заключение текущего раздела следует отметить, что удаляются представления посредством инструкции DROP VIEW . Так представление Minsk может быть удалено при выполнении инструкции:
drop view Minsk;.
Наименьшей единицей информации, которую можно добавить в реляционную базу данных, является одна строка. В реляционной СУБД существует три способа добавления новых строк в базу данных:
• Однострочная инструкция INSERT позволяет добавить в таблицу одну новую строку. Она широко используется в повседневных приложениях, например в программах ввода данных.
• Многострочная инструкция INSERT обеспечивает извлечение строк из одной части базы данных и добавление их в другую таблицу. Она обычно используется, когда “старые” строки таблицы пересылаются в неиспользуемую таблицу для сохранения.