Здавалка
Главная | Обратная связь

Модифицируемые представления



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

Содержимое представления может изменяться командами модификации, которые будут автоматически перенаправлены к базовой таблице. Чтобы представление было модифицируемым, оно должно быть создано на основе одной таблицы (или другого модифицируемого представления), а запрос, на котором основано представление, не должен содержать подзапросов, агрегатных функций, UDF, хранимых процедур, предложений DISTINCT, GROUP BYи HAVING. Если выполняются все эти условия, то представление


автоматически становится модифицируемым, т.е. для него можно выполнять запросы DELETE, INSERT и UPDATE, которые будут изменять данные в таблице-источнике.

Чтобы сделать модифицируемым представление, которое нарушает любое из вышеперечисленных условий, применяется механизм триггеров. Триггеры для модификации представления должны срабатывать при событиях BEFORE DELETE, BEFORE UPDATE и BEFORE INSERT. В теле триггеров необходимо описать, что должно происходить с данными при удалении, изменении и вставке.

 

 

Задание

Лабораторную работу следует выполнять в следующем порядке:

1. Создать аналогично предыдущим лабораторным работам рабочую папку и назвать ее "ЛР8".

2. Скопировать в эту папку файл сценария, созданный при выполнении предыдущей лабораторной работы.

3. Открыть в приложении "IB Expert" этот сценарий.

4. Исправить текст комментариев и сделать, чтобы база данных теперь создавалась в папке "ЛР8".

5. Добавить в конец сценария операторы создания не менее трех представлений.

6. Выполнить сценарий и сохранить его в папке "ЛР8".

7. Зарегистрировать созданную базу данных в программе "IB Expert" и подключиться к ней.

8. Создать в своей базе данных еще одно представление в диалоговом режиме, которое не должно быть модифицируемым. Оно должно называться "TestView" и основываться, например, на нескольких таблицах или других представлениях. Добавить в диалоговом режиме к этому просмотру триггеры для разрешения выполнения обновления. Перенести в сценарий операторы создания этого представления и триггеров, которые автоматически сгенерирует "IB Expert".

9. Создать в папке "ЛР8" резервную копию базы данных.

10. Создать и сохранить в папке "ЛР8" файл с отчетом о выполнении лабораторной работы.

 

1. 8.6. Ход работы

Для создания представлений в диалоговом режиме программы "IB Ex-pert" необходимо выполнить следующие действия:

 

1. Подключиться к базе данных и выполнить команду главного меню "Database®New View". В результате откроется окно "View", в котором будет содержаться заготовка оператора создания представления (рис. 25).

 

Рис. 25. Окно ввода оператора создания представления

 


 

2. Изменить в поле на вкладке "SQL" текст оператора создания представления для создания нужного представления, а затем нажать кнопку [Compile] (Ctrl+F9). В результате откроется диалоговое окно (рис. 26), в котором надо подтвердить (кнопка [Commit]) или отменить (кнопка [Rollback]) выполнение операции.

 

 


 

Рис. 26. Диалог создания представления


 

3. Представление, команда создания которого приведена на рис. 26 не является модифицируемым. Чтобы сделать его модифицируемым, создадим для него триггер позволяющий изменять поле "Name" (изменять поле "NameCount" не имеет смысла).

4. Чтобы создать триггер у имеющегося представления, необходимо в окне "View" перейти на вкладку "Triggers", нажать правую кнопку мыши на типе события, при котором должен срабатывать триггер, и в контекстном меню выбрать команду "New Trigger" (рис. 27). В результате откроется окно "Trigger", в котором будет находиться заготовка оператора создания триггера. Используя эту заготовку, следует ввести правильный оператор создания триггера и нажать кнопку [Compile Trigger] (Ctrl+F9).

 

 


 

 

Рис. 27. Окно создания триггера для представления

 

 


Пример триггера, которые для представления "TestView" позволяет модифицировать поле "Name" приведен на рис. 28.

 

 

 

Рис. 28. Триггер, позволяющий модифицировать представление

 


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.