Лабораторная работа №7
Цель работы: Изучение перегружаемых функций и триггеров в PostgreSQL. Изучить синтаксис команд. Получение навыков работы с триггерами.
Задание. Общая часть: Ознакомиться с теоретическими сведениями о возможностях создания перегружаемых функций и триггеров в PostgreSQL. Согласно варианту из лабораторной работы №4 создать перегружаемые функции и триггеры. Продемонстрировать работу триггеров на примерах вставки и удаления записей из таблицы. Если в базе нет подходящих данных, то изменить условия, либо добавить подходящие данные. Удалить триггер. По заданию преподавателя создать триггер и проверить его работоспособность. Просмотреть и проанализировать полученную в результате выполнения операций информацию.
Вариант 1: Триггер выполняется перед удалением записи из таблицы хоккейных команд. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемой команде, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу хоккейных команд. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя команды – оно генерируется по схеме – Komanda + уникальный номер из последовательности;
- eсли не указан город – ставится значение по умолчанию – “Omsk” ;
- если не указан рейтинг или рейтинг
Вариант 2: Триггер выполняется перед удалением записи из таблицы клиента продуктового магазина. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому клиенту, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу клиентов продуктового магазина. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя клиента – оно генерируется по схеме – Klient + уникальный номер из последовательности;
- eсли не указан город клиента– ставится значение по умолчанию – “Moskva” ;
- если не указан объем заказа или объем заказа
Вариант 3: Триггер выполняется перед удалением записи из таблицы водителя. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому водителю, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу водителя. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя водителя – оно генерируется по схеме – Voditel+ уникальный номер из последовательности;
- eсли не указан город водителя – ставится значение по умолчанию – “Peterburg” ;
- если не указан стаж водителя или стаж
Вариант 4: Триггер выполняется перед удалением записи из таблицы автора. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому автору, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу авторов. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя автора – оно генерируется по схеме – Avtor + уникальный номер из последовательности;
- eсли не указан номер автора – он генерируется по схеме – S+ уникальный номер из последовательности;
- eсли не указан город автора – ставится значение по умолчанию – “Samara” ;
Вариант 5: Триггер выполняется перед удалением записи из таблицы производителей машин. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому производителю, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу производителей машин. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя производителя – оно генерируется по схеме – Proizvoditel + уникальный номер из последовательности;
- eсли не указан номер производителя – он генерируется по схеме – S+ уникальный номер из последовательности;
- eсли не указан город производителя– ставится значение по умолчанию – “Tokio” ;
- если не указан объем двигателя – устанавливается объем двигателя, равный 1300 см3 для производителей из Tokio и 0 для всех остальных.
Вариант 6: Триггер выполняется перед удалением записи из таблицы поставщиков фруктов. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому поставщику, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу поставщиков фруктов. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя поставщика – оно генерируется по схеме – Postavshik + уникальный номер из последовательности;
- eсли не указан номер поставщика – он генерируется по схеме – S+ уникальный номер из последовательности;
- eсли не указан город поставщика– ставится значение по умолчанию – “Krasnodar” ;
- если не указан объем поставок или объем поставок
Вариант 7: Триггер выполняется перед удалением записи из таблицы печатной продукции. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемой печатной продукции, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу печатной продукции. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано название печатной продукции – оно генерируется по схеме – Kniga + уникальный номер из последовательности;
- eсли не указан номер печатной продукции – он генерируется по схеме – S+ уникальный номер из последовательности;
- если не указан объем заказа или объем заказа
Вариант 8: Триггер выполняется перед удалением записи из таблицы студента. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому студенту, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу студентов. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя студента – оно генерируется по схеме – Student + уникальный номер из последовательности;
- eсли не указан номер студента – он генерируется по схеме – S+ уникальный номер из последовательности;
- eсли не указан город студента– ставится значение по умолчанию – “Novosibirsk” .
Вариант 9: Триггер выполняется перед удалением записи из таблицы мастеров. Триггер проверяет наличие в другой таблице записей, относящихся к удаляемому мастеру, и, если такие записи есть, удаляет их.
Триггер выполняется перед вставкой новой записи в таблицу мастеров. Триггер проверяет значения, которые должна содержать новая запись и может их изменить:
- eсли не указано имя мастера – оно генерируется по схеме – Master + уникальный номер из последовательности;
- eсли не указан номер мастера – он генерируется по схеме – S+ уникальный номер из последовательности;
- eсли не указан город мастера– ставится значение по умолчанию – “Irkutsk” ;
- если не указан стаж мастера или стаж
Содержание отчета
Отчет должен содержать титульный лист, цель работы, задание, коды команд создания триггеров, результаты работы триггеров, демонстрация правильности работы триггеров, тексты запросов и их результаты, выводы и анализ результатов работы.
Контрольные вопросы
1. Что такое триггер, для чего он нужен?
2. Синтаксис определения триггера.
3. Дайте краткое описание компонентов определения триггеров.
4. С помощью какой команды можно удалить триггер?
5. Для чего нужны перегружаемые функции?
6. Что означает ключевое слово BEFORE в определении триггера?
7. Что означает ключевое слово AFTER в определении триггера?
8. Каким образом обращаются к отдельным полям записей NEW и OLD в триггерных процедурах?
9. Что такое триггерная функция?
10. Синтаксис определения триггерной функции.
11. Каким образом можно проверить правильность работы триггера?
7.1. Использование перегружаемых функций в СУБД PostgreSQL
PostgreSQL позволяет создавать перегружаемые функции. Под этим понимается определение нескольких функций с одинаковыми именами при условии, что каждая из них получает уникальный набор аргументов.