Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rukovodstvo_k_laboratornym_rabotam_po_kursu_Bazy_Dannykh.doc
Скачиваний:
3
Добавлен:
09.07.2021
Размер:
320 Кб
Скачать

Лабораторная работа 8 Создание хранимой процедуры или триггера баз данных

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

Порядок выполнения

1. Скопировать из схемы MAI таблицу сотрудников SOTR в схему студента одним из двух вариантов:

а) Создать таблицу с такой же структурой, что и таблица SOTR и с помощью многострочного оператора INSERT вставить в нее данные из таблицы SOTR.

б) создать таблицу на основе оператора CREATE TABLE…SELECT…

2. Определить входные параметры для хранимой процедуры или тип для триггера.

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

4. Создать хранимую процедуру или триггер для созданной таблицы по варианту работы, предложенному преподавателем.

5. Экспериментально проверить правильность работы хранимой процедуры или триггера базы данных. В случае неправильной работы хранимой процедуры или триггера осуществлять откат транзакции.

6. Составить отчет, в котором привести программу хранимой процедуры или триггера и ответить на контрольные вопросы. Продемонстрировать преподавателю работу хранимой процедуры или триггера.

Варианты работы

Вариант 1

Создать хранимую процедуру, увеличивающую зарплату у сотрудников отдела на 15% имеющих более 3 детей.

Вариант 2

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

Вариант 3

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

Вариант 4

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

Вариант 5

Создать хранимую процедуру изменения города сотрудника на другой город, если в новом городе живет не более 2 его однофамильцев.

Вариант 6

Создать хранимую процедуру, переводящую фамилию сотрудника в верхний регистр, если его зарплата не превышает среднюю зарплату его отдела.

Вариант 7

Создать хранимую процедуру вставки нового сотрудника, если в результате вставки количество сотрудников отдела, куда вставляется сотрудник, не превышает максимального количества сотрудников отделов. В случае вставки в отдел с максимальным числом сотрудников, вставка должна игнорироваться.

Вариант 8

Создать хранимую процедуру перевода сотрудника в другой отдел, если сотрудника учатся более двух детей в заданной школе.

Вариант 9

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

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

  • вида действия с таблицей сотрудников;

  • даты и времени действия;

  • идентификатора пользователя;

  • номера сотрудника, для которого осуществлялось действие.

Создать триггер аудита таблицы сотрудников.

Вариант 10

Создать триггер для таблицы сотрудников, осуществляющий следующие функции:

  1. модификацию (при вставке и изменении) вводимого значения фамилии сотрудников таким образом, что бы, при вводе фамилии сотрудника, она бы переводилась в верхний регистр, и из нее удалялись начальные и завершающие пробелы;

  2. невозможность модификации зарплаты сотрудника, если он работает в отделе 110.

Вариант 11

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

Вариант 12

Создать триггер для таблицы сотрудников, не позволяющий переводить сотрудника в другой отдел, если более одного его ребенка учится в школе с номером 1. Выборку таблиц детей и школ осуществлять из схемы MAI.

Контрольные вопросы

  1. Какие операторы SQL не допустимы в триггерах баз данных по сравнению с хранимой процедурой?

  2. Какие типы передачи параметров используются в процедурах?

  3. Чем отличается триггер от хранимой процедуры?

  4. Какой блок триггера не компилируется?

  5. Какое максимальное количество триггеров можно создать для одной таблицы?

  6. Какое преимущество дает использование хранимых процедур?

Соседние файлы в предмете Базы данных