Перегружаемые функции, триггеры в postgresql

Лабораторная работа №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 позволяет создавать перегружаемые функции. Под этим понимается определение нескольких функций с одинаковыми именами при условии, что каждая из них получает уникальный набор аргументов.

5. Проектирование СУБД. Функции и триггеры | Технострим


Похожие статьи.

Понравилась статья? Поделиться с друзьями: