-- 3.g.i. Создаём таблицу логов
CREATE TABLE log_project (
id INT AUTO_INCREMENT PRIMARY KEY,
dat VARCHAR(10),
time VARCHAR(8),
event VARCHAR(10),
row_number VARCHAR(20), -- shifr проекта
users VARCHAR(100)
);
DELIMITER //
-- 3.g.ii. Логирование INSERT
CREATE TRIGGER tr_log_insert_project
AFTER INSERT ON PROJECT
FOR EACH ROW
BEGIN
INSERT INTO log_project (dat, time, event, row_number, users)
VALUES (CURDATE(), CURTIME(), 'INSERT', NEW.shifr, CURRENT_USER());
END //
-- 3.g.iii. Логирование DELETE
CREATE TRIGGER tr_log_delete_project
AFTER DELETE ON PROJECT
FOR EACH ROW
BEGIN
INSERT INTO log_project (dat, time, event, row_number, users)
VALUES (CURDATE(), CURTIME(), 'DELETE', OLD.shifr, CURRENT_USER());
END //
-- 3.g.iv. Логирование UPDATE
CREATE TRIGGER tr_log_update_project
AFTER UPDATE ON PROJECT
FOR EACH ROW
BEGIN
INSERT INTO log_project (dat, time, event, row_number, users)
VALUES (CURDATE(), CURTIME(), 'UPDATE', CONCAT(OLD.shifr, ' -> ', NEW.shifr), CURRENT_USER());
END //
DELIMITER ;
-- Проверка:
UPDATE PROJECT SET cost = cost + 1000 WHERE shifr = 'PRJ01_NEW';
SELECT * FROM log_project; -- Увидите строку с событием UPDATE, текущей датой, временем и вашим логином