Загрузка данных


-- 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, текущей датой, временем и вашим логином