Files
sql_advanced/lab2-10/task1.sql
T
Vitalii Litvinchuk 6deed0469a first commit
2026-05-04 23:15:09 +03:00

112 lines
5.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
use Lucky_Shrub;
Основні завдання:
Розробка INSERT, UPDATE та DELETE тригерів.
################################################
############## Умови завдань ###############
################ Завдання 1: ###############
1. Створіть INSERT триггер з назвою ProductSellPriceInsertCheck. Тригер має перевірити,
чи ціна SellPrice продукту менша ніж BuyPrice після того як новий продук було додано у таблицю Products.
Якщо таке станеться, у таблицю Notifications має бути додане сповіщення для відділу продажів.
Відділ продажів має переконатися, що таке значення було введено не помилково.
Сповіщення слід додати у такому форматі: 'Для продукту з id ' + ProductID + 'було внесено значення SellPrice яке менше чи рівне BuyPrice'
2. Перегляньте існуючі тригери
3. Перевіте роботу тригера. Додайте запис у таблицю Products із ціною закупки вищою ніж ціна продажу, на прклад:
P7, Агрополотно, 70, 70, 21;
4. Перевірте наявність запису у таблиці Products 5. Перевірте наявність запису у таблиці Notifications
drop trigger ProductSellPriceInsertCheck;
create trigger if not exists ProductSellPriceInsertCheck
after insert on Products
for each row
begin
if new.SellPrice <= new.BuyPrice then
insert into Notifications (Notification, DateTime)
values (concat('Для продукту з id ', new.ProductID, 'було внесено значення SellPrice яке менше чи рівне BuyPrice'), now());
end if;
end;
insert into
Products (
ProductID,
ProductName,
BuyPrice,
SellPrice,
NumberOfItems
)
values (
'P7',
'Агрополотно',
70,
70,
21
);
show triggers like 'Products';
select * from Notifications;
select * from Products;
delete from Products where ProductID = 'P7';
################################################
################ Завдання 2: ###############
1. Створіть UPDATE тригер з назвою ProductSellPriceUpdateCheck. Цей тригер повинен перевіряти
чи продукти не оновлюються з ціною SellPrice, яка менша чи рівна ціні BuyPrice. Якщо це так,
слід додати сповіщення до таблиці Notifications для відділу продажів щоб вони переконалися,
що ціни на продукти не оновлено з некоректними значеннями. Цей тригер надсилає сповіщення у
tаблицю Notifications, яке попереджає відділ продажів про проблему.
Сповіщення має бути додано у такому форматі: ProductID + 'було оновлено зі значенням SellPrice = ' + SellPrice + 'яке менше чи рівне значення BuyPrice'
2. Перегляньте тригери
3. Перевірте роботу тригера. Наприклад, змініть значення SellPrice на 65 для запису з ID продукту P6 таблиці Products
4. Перевірте наявність запису у таблиці Products
5. Перевіряємо наявність запису у таблиці Notifications
drop trigger if exists ProductSellPriceUpdateCheck;
create trigger if not exists ProductSellPriceUpdateCheck
before update on Products
for each row
begin
if new.SellPrice <= new.BuyPrice then
insert into Notifications (Notification, DateTime)
values (concat(new.ProductID, 'було оновлено зі значенням SellPrice = ', new.SellPrice, 'яке менше чи рівне значення BuyPrice'), now());
end if;
end;
update Products set SellPrice = 60 where ProductID = 'P1';
select * from Products where ProductID = 'P1';
select * from Notifications;
################################################
################ Завдання 3: ###############
1. Створіть тригер DELETE з назвою NotifyProductDelete. Цей тригер повинен додати сповіщення
до таблиці Notifications для відділу продажів після того, як продукт було видалено з таблиція Products.
Сповіщення повинно бути у такому форматі: 'Продукт з id' + ProductID + 'було видалено'
2. Перегляньте тригери
3. Перевірте роботу тригра. Наприклад, видаліть один запис із таблицю Products з ID продукту P7
4. Перевірте наявність запису у таблиці Products
5. Перевірте наявність запису у таблиці Notifications
drop trigger NotifyProductDelete;
create trigger if not exists NotifyProductDelete
after delete on Products
for each row
begin
insert into Notifications (Notification, DateTime)
values (concat('Продукт з id ', old.ProductID, 'було видалено'), now());
end;
show triggers like 'Products';
delete from Products where ProductID = 'P1';
select * from Products;
select * from Notifications;