Базы данных/Лабораторная работа 4 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница: «Цели лабораторной работы: * Знакомство с языком PL/pgSQL * Создание процедур, функций и тригг…»)
 
Строка 15: Строка 15:
 
== Транзакции ==
 
== Транзакции ==
  
 +
== Задания лабораторной работы ==
 +
1. Сделать таблицу с историей изменений movie_info, в которую при обновлении через триггер записываются прежние значения и дата окончания их действий (дата обновления).
 +
 +
2. Создать функцию с входным параметром - имя актера. Если актер с таким именем не найден, функция должна вернуть 0. Если найден, то вычислить через person_info birth date (info_type_id=21) и death date (info_type_id=23) возраст актера. Если актер еще не умер, то вычислить, сколько сейчас лет. Функция должна вернуть целое число прожитых лет.
 +
 +
3. Используя функцию, созданную ранее, создайте процедуру, которая по имени актера выводит в лог текст следующего содержания:
 +
  Name: ...
 +
  Nicknames: nickname1, nickname2, ... строка выводится только если у человека есть клички, выводятся все клички через запятую
 +
  Age: ... вычисляется из функции
 +
  First appear: ... фильм и год выхода, в котором актер впервые снялся.
 +
 +
Если актер не найден или не удалось определить его первую роль, то процедура должна завершиться с ошибкой и вывести в лог "Invalid data"
  
 
== Защита лабораторной работы ==
 
== Защита лабораторной работы ==
*  
+
* Показать код созданных триггера, функции и процедуры
 +
* Продемонстрировать их работу
 +
* По просьбе преподавателя прокомментировать ход выполнения кода.
  
 
== Дополнительно ==
 
== Дополнительно ==
 
* http://www.postgresql.org/docs/9.3/static/plpgsql.html
 
* http://www.postgresql.org/docs/9.3/static/plpgsql.html
 
* http://www.postgresql.org/docs/9.3/static/tutorial-transactions.html
 
* http://www.postgresql.org/docs/9.3/static/tutorial-transactions.html
 +
* http://www.postgresql.org/docs/9.3/static/plpython.html - позволяет писать хранимые процедуры на питоне, нужно включить расширение

Версия 15:44, 18 мая 2016

Цели лабораторной работы:

  • Знакомство с языком PL/pgSQL
  • Создание процедур, функций и триггеров, обеспечивающих удобство работы с базой и обеспечение целостности
  • Использование транзакция для обеспечения целостности

Зачем использовать PL/pgSQL

Процедуры и функции

Триггеры

Транзакции

Задания лабораторной работы

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

2. Создать функцию с входным параметром - имя актера. Если актер с таким именем не найден, функция должна вернуть 0. Если найден, то вычислить через person_info birth date (info_type_id=21) и death date (info_type_id=23) возраст актера. Если актер еще не умер, то вычислить, сколько сейчас лет. Функция должна вернуть целое число прожитых лет.

3. Используя функцию, созданную ранее, создайте процедуру, которая по имени актера выводит в лог текст следующего содержания:

 Name: ...
 Nicknames: nickname1, nickname2, ... строка выводится только если у человека есть клички, выводятся все клички через запятую
 Age: ... вычисляется из функции
 First appear: ... фильм и год выхода, в котором актер впервые снялся.

Если актер не найден или не удалось определить его первую роль, то процедура должна завершиться с ошибкой и вывести в лог "Invalid data"

Защита лабораторной работы

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

Дополнительно