русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обновление представлений


Дата добавления: 2015-07-09; просмотров: 563; Нарушение авторских прав


На некоторые представления можно писать запросы Update, Delete и Insert, как на обычные таблицы. При выполнении таких запросов реально все изменения вносятся в физические таблицы.

Такие представления называются обновляемыми. Согласно стандарту SQL, обновляемыми являются представления, основанные на запросах:

  1. только по одной таблице
  2. запрос не должен содержать ключевых слов DISTINCT, GROUP BY, HAVING
  3. не должен содержать вложенных запросов
  4. не должен быть комбинированным, т.е. недолжен содержать операций UNION, INTERSECT, EXCEPT (MINUS).

Oracle, дополнительно, не позволяет обновлять запросы с сортировкой результатов.

Таким образом, обновляемых представлений не так и много:

· представления с отбором столбцов (вертикальные представления)

· представления с отбором строк (горизонтальные представления)

· представления с отбором строк и столбцов (смешанные представления).

Например, создадим горизонтальное представление на основе выборки из таблицы оценок marks, содержащее только оценки по Математике.

Предварительно мы выяснили из таблицы предметов subjects, что математика имеет код 1.

Тогда для создания представления потребуется выполнить команду:

Create VIEW mark_1

as

select * FROM marks

WHERE cod_sub=1

Это представление будет обновляемым, поэтому преподаватель математики, которому разрешено обновление этого представления, может изменить любую (одну) оценку, например, таким запросом:

UPDATE mark_1 SET mark=5 WHERE cod_st=123

Однако, запрос:

UPDATE mark_1 SET cod_sub=2 WHERE cod_st=123

который также, как и первый, является разрешенным, приведет к неожиданным последствиям. Обновленная строка окажется за пределами представления mark_1 и запрос:

SELECT * FROM mark_1

эту строку не покажет.

Если такой побочный эффект нежелателен, в команду CREATE VIEW … следует добавить дополнительную фразу WITH CHECK OPTION:



DROP VIEW mark_1

Create VIEW mark_1

as

select * FROM marks WHERE cod_sub=1

WITH CHECK OPTION

Теперь при любой попытке изменить код предмета или добавить предмет с кодом, отличным от единицы, будет выдано сообщение об ошибке.

Если говорить о данном конкретном примере, то можно было бы поступить еще проще: не включать столбец cod_sub в представление, тогда у преподавателя математики просто не будет никакой возможности изменить (нечаянно или преднамеренно) код своего предмета.



<== предыдущая лекция | следующая лекция ==>
Создание и удаление представлений | Процедурные расширения языка SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.204 сек.