Задание 2.
Для добавленной в 4-й лабораторной работе таблицы создайте любой триггер.
Сделал триггер, который запрещает добавлять студента с именем “Волков Александр Сергеевич”
CREATE OR REPLACE FUNCTION block_volkov()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.last_name = 'Волков'
AND NEW.first_name = 'Александр'
AND NEW.patronymic = 'Сергеевич' THEN
RAISE EXCEPTION 'Добавление Волкова Александра Сергеевича в таблицу студентов запрещено!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER prevent_volkov
BEFORE INSERT OR UPDATE ON Students
FOR EACH ROW EXECUTE FUNCTION block_volkov();
INSERT INTO students (student_id, last_name, first_name, patronymic, students_group_number, birthday, email, partner)
VALUES ('703942', 'Волков', 'Александр', 'Сергеевич', 'ПИН-33', '1995-02-05', 'email@example.com', NULL);
Контрольные вопросы
В чем отличие между процедурой и функцией?
Что такое курсоры?
Для каких целей используют триггеры?
Возможно ли написать триггерную функцию на языке SQL?
Для чего нужны представления?
1. В чем отличие между процедурой и функцией?
Процедура и функция — это оба типы программных модулей, но они имеют некоторые отличия. Основное отличие заключается в том, что функция возвращает значение (может быть использована в выражениях), в то время как процедура может выполнять действия, но не возвращает значение. Также функции чаще используются для вычислений, а процедуры — для выполнения операций, таких как модификация данных.
2. Что такое курсоры?
Курсоры — это объекты, которые позволяют программам обрабатывать наборы строк, возвращаемых запросом, по одной строке за раз. Курсоры позволяют вам итеративно проходить через результаты выборки, что полезно для выполнения более сложных операций с каждой строкой.
3. Для каких целей используют триггеры?
Триггеры используются для автоматического выполнения определенных действий в базе данных при возникновении определенных событий, таких как вставка, обновление или удаление данных в таблице. Это может включать проверку целостности данных, автоматическое обновление связанных таблиц, логирование изменений и другие задачи.
4. Возможно ли написать триггерную функцию на языке SQL?
Да, в большинстве систем управления базами данных (СУБД) можно написать триггерные функции на языке SQL. Однако многие СУБД поддерживают написание триггеров на других языках программирования (например, PL/pgSQL в PostgreSQL), что предоставляет больше возможностей для управления логикой триггера.
5. Для чего нужны представления?
Представления — это виртуальные таблицы, которые содержат результаты заранее определенного запроса. Они используются для упрощения сложных запросов, обеспечения безопасности данных (ограничивая доступ к определенным столбцам или строкам), а также для абстракции и обеспечения согласованности данных, поскольку изменения в базовой таблице автоматически отражаются в представлениях.
