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;