first commit

This commit is contained in:
Vitalii Litvinchuk
2026-05-04 23:15:09 +03:00
commit 6deed0469a
49 changed files with 5366 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
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;
+65
View File
@@ -0,0 +1,65 @@
CREATE DATABASE EventsDB;
USE EventsDB;
CREATE TABLE Messages (
id INT PRIMARY KEY AUTO_INCREMENT,
message VARCHAR(100),
created_at DATETIME
);
SET GLOBAL event_scheduler = ON;
#1.1 Створіть одноразову подію (слайд 33)
CREATE EVENT IF NOT EXISTS test_event_02
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 20 second
ON COMPLETION PRESERVE
DO
INSERT INTO
Messages(message,created_at)
VALUES('Test MySQL Event 2', DATE_FORMAT(
CONVERT_TZ(
UTC_TIMESTAMP(),
'+00:00',
'Europe/Kyiv'
),
'%Y-%m-%d %H:%i:%s'
));
drop event test_event_02;
ALTER EVENT test_event_02
ON SCHEDULE AT NOW()
ENABLE;
SHOW EVENTS;
# 1.2 Переконайтеся у її працездатності
select * from Messages;
# 2.1 Створіть повторювану подію (слайд 34)
CREATE EVENT test_event_03
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
DO
INSERT INTO Messages(message,created_at)
VALUES('Test MySQL recurring Event', DATE_FORMAT(
CONVERT_TZ(
UTC_TIMESTAMP(),
'+00:00',
'Europe/Kyiv'
),
'%Y-%m-%d %H:%i:%s'
));
drop event test_event_03;
SHOW EVENTS;
# 2.2 Переконайтеся у її працездатності
select * from Messages;
set global time_zone = 'Europe/Kyiv';
+94
View File
@@ -0,0 +1,94 @@
Робота з тригерами (triggers)
Lucky Shrub потребує визначити правила для вставки, оновлення та видалення даних про продукти у своїй базі даних. Вам слід використати для цього тригери
Таблиця Products містить наступну інформацію про кожен продукт:
ProductID,
ProductName,
BuyPrice,
SellPrice ,
NumberOfItems.
Передумови
Для виконання роботи Вам потрібна буде база даних Lucky Shrub та таблиця Products в MySQL. Таблиця Products повинна бути заповнена відпвідними даними. Виконайте наступні кроки для створення бази даних (якщо потрібно) та заповнення таблиці даними:
------------------------------------------------
1: Створіть базу даних Lucky_Shrub (якщо потрібно)
CREATE DATABASE IF NOT EXISTS Lucky_Shrub;
-------------------------------------------------
2: Оберіть базу даних Lucky_Shrub
USE Lucky_Shrub;
------------------------------------------------
3: Створіть таблицю Products:
CREATE TABLE Products (
ProductID VARCHAR(10) PRIMARY KEY,
ProductName VARCHAR(100),
BuyPrice DECIMAL(6, 2),
SellPrice DECIMAL(6, 2),
NumberOfItems INT
);
------------------------------------------------
4: Використайте наступний код для заповнення таблиці Products:
INSERT INTO
Products (
ProductID,
ProductName,
BuyPrice,
SellPrice,
NumberOfITems
)
VALUES (
"P1",
"Artificial grass bags ",
40,
50,
100
),
(
"P2",
"Wood panels",
15,
20,
250
),
(
"P3",
"Patio slates",
35,
40,
60
),
(
"P4",
"Sycamore trees ",
7,
10,
50
),
(
"P5",
"Trees and Shrubs",
35,
50,
75
),
(
"P6",
"Water fountain",
65,
80,
15
);
------------------------------------------------
5: Створіть таблицю Notifications з такими полями:
CREATE TABLE Notifications (
NotificationID INT AUTO_INCREMENT,
Notification VARCHAR(255),
DateTime TIMESTAMP NOT NULL,
PRIMARY KEY (NotificationID)
);
------------------------------------------------