
Чурилов / 3 курс 2 семестр / Чурилов_БД_Z9411_ЛР8
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
Кафедра проблемно-ориентированных вычислительных комплексов
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
кандидат техн. наук _________________ Е.Л. Турнецкая
подпись, дата
ЛАБОРАТОРНАЯ РАБОТА №8
Создание триггеров
по дисциплине «Базы данных»
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. Z9411 __________________ А.С. Чурилов
подпись, дата
Студенческий билет № 2019/3684
Санкт-Петербург
2022г.
Оглавление
1. Цель работы 3
2. Создание триггера на добавление записей 3
3. Создание триггера на обновление записей 5
4. Создание триггера на удаление записей 6
5. Просмотр списка триггеров 7
Заключение 7
Список источников 9
Цель работы
Цель лабораторной работы: изучить операции по созданию триггеров на сервере MySQL.
Создание триггера на добавление записей
Для выполнения работы воспользуемся базой данных DBtheatre, характеризующей информационную систему «Театр». Соответствующая даталогическая модель представлена на рисунке 1.
|
Рисунок 1 – Даталогическая модель информационной системы «Театра» |
Начнём работу в среде разработки MySQL Workbench. Создадим программный триггер, привязанный к событию добавления новых записей (insert) в оформленную ранее таблицу.
Реализуем триггер под названием «insert_performances», который будет определять число добавленных в таблицу performances записей.
На рисунке 2 приведен исходный вид таблицы performances.
|
Рисунок 2 – Записи таблицы performances |
Для решения поставленной задачи пропишем следующую программную инструкцию:
set @count_insert_performances = 0 //
create trigger insert_performances before insert on performances
for each row
begin
set @count_insert_performances = @count_insert_performances + 1;
end //
Дополним таблицу performances новыми записями. Реализуем следующий программный код:
insert into performances values ("Oblomov", "Kulikova P.E.", "Kalinin D.D.", "Moskvin P.P.", "Kurochkin T.K.", "Tragedy", "Adult") //
insert into performances values ("Little women", "Kostina K.O.", "Vavilov G.F.", "Spelii O.O.", "Utkina B.K.", "Musical", "Childish") //
insert into performances values ("Anna Karenina", "Panchin K.O.", "Mishkin G.F.", "Petrovskii O.O.", "Kirillov B.K.", "Tragedy", "Adult") //
На рисунке 3 представлен дополненный перечень записей таблицы performances.
|
Рисунок 3 – Таблица performances после добавления новых записей |
Чтобы проверить корректность работы триггера insert_performances, выведем на экран значение переменной count_insert_performances, куда сохраняется количество новых записей. Для этого воспользуемся командой select. На рисунке 4 приведен результат работы алгоритма триггера insert_performances.
|
Рисунок 4 – Результат работы триггера insert_performances |
Как видно из рисунка 4, триггер на добавление новых записей insert_performances верно справляется с поставленной задачей.
Создание триггера на обновление записей
Создадим программный триггер, привязанный к событию обновления записей (update) в оформленной ранее таблице.
Реализуем триггер под названием «update_employees», который будет определять число обновленных записей в таблице employees.
На рисунке 5 приведен исходный вид таблицы employees.
|
Рисунок 5 – Записи таблицы employees |
Для решения поставленной задачи пропишем следующую программную инструкцию:
set @count_update_employees = 0 //
create trigger update_employees before update on employees
for each row
begin
set @count_update_employees = @count_update_employees + 1;
end //
Обновим записи таблицы employees, изменив номер мобильного телефона у двух сотрудников. Реализуем следующий программный код:
update employees set ph_emp = '999-99-99' where id_emp = 2 //
update employees set ph_emp = '888-99-99' where id_emp = 4 //
На рисунке 6 представлен измененный перечень записей таблицы employees.
|
Рисунок 6 – Таблица employees после обновления записей |
Чтобы проверить корректность работы триггера update_employees, выведем на экран значение переменной count_update_employees, куда сохраняется количество обновленных записей. Для этого воспользуемся командой select. На рисунке 7 приведен результат работы алгоритма триггера update_employees.
|
Рисунок 7 – Результат работы триггера update_employees |
Как видно из рисунка 7, триггер на изменение записей update_employees верно справляется с поставленной задачей.
Создание триггера на удаление записей
Создадим программный триггер, привязанный к событию удаления записей (delete) из оформленной ранее таблицы.
Реализуем триггер под названием «delete_performances», который будет в случае удаления строк из таблицы performances также стирать соответствующие записи из сущности troupes.
На рисунке 8 приведен исходный вид таблицы troupes.
|
Рисунок 8 – Записи таблицы troupes |
Для решения поставленной задачи пропишем следующую программную инструкцию:
create trigger delete_performances before delete on performances
for each row
begin
delete from troupes where name_perf_troupe = old.name_perf;
end //
Удалим одну запись таблицы performances, которая отвечает условию name_perf=”Oblomov”. Реализуем следующий программный код:
delete from performances
where name_perf = 'Oblomov' //
Чтобы проверить корректность работы триггера delete_performances, выведем на экран содержание таблицы troupes, откуда должна была автоматически удалиться одна запись. Для этого воспользуемся инструкцией select * from troupes. На рисунке 9 приведен результат работы алгоритма триггера delete_performances.
|
Рисунок 9 – Результат работы триггера delete_performances |
Как видно из рисунка 9, триггер на удаление записей delete_performances верно справляется с поставленной задачей.
Просмотр списка триггеров
Для ознакомления со списком разработанных триггеров воспользуемся командой show triggers from DBtheatre.
На рисунке 10 представлен перечень созданных триггеров в среде разработки MySQL Workbench.
|
Рисунок 10 – Перечень созданных триггеров |
Заключение
В результате выполнения лабораторной работы были реализованы следующие задачи:
закреплены знания по применению переменных различного типа;
упрочены практические навыки работы с таблицами базы данных и обновления записей, хранящихся в них;
изучены операции по созданию триггеров различных типов в среде разработки MySQL Workbench.
Список источников
Кригель, А. SQL. Библия пользователя. [Текст] / А. Кригель. – Москва: Вильямс, 2010. – 752 с.
Кузин, А.В. Разработка баз данных в системе Microsoft Access. Учебник. [Текст] / А.В. Кузин. – Санкт-Петербург: Форум, 2021. – 224 с.
Кумскова, И.А. Базы данных. Учебник. [Текст] / И.А. Кумскова. – Москва: Кнорус, 2021. – 400 с.
Свиридова, М.Ю. Система управления базами данных Access. [Текст] / М.Ю. Свиридова. – Москва: Academia, 2010. – 192 с.
Гурвиц, Г.А. Microsoft Access 2021. Разработка приложений на реальном примере. [Текст] / Г.А. Гурвиц. – Москва: Лань, 2021. – 502 с.