Обновление логики триггера
Ваши требования могут меняться со временем. Например, вы можете захотеть регистрировать больше деталей. На этом шаге вы обновите триггер, чтобы он также записывал цену нового продукта.
В MySQL нельзя напрямую изменять триггер. Сначала необходимо удалить существующий триггер, а затем создать новый с обновленной логикой.
Переключитесь на вашу базу данных.
USE mydatabase;
Сначала удалите существующий триггер. Предложение IF EXISTS предотвращает ошибку, если триггер уже был удален.
DROP TRIGGER IF EXISTS products_after_insert;
Теперь воссоздайте триггер с обновленной логикой. Эта новая версия будет включать цену продукта в action_description.
DELIMITER //
CREATE TRIGGER products_after_insert
AFTER INSERT ON products
FOR EACH ROW
BEGIN
INSERT INTO product_logs (product_id, action_description)
VALUES (NEW.id, CONCAT('New product added: ', NEW.name, ' with price ', NEW.price));
END//
DELIMITER ;
Чтобы протестировать обновленный триггер, вставьте еще один продукт.
INSERT INTO products (name, price) VALUES ('Mouse', 25.00);
Теперь выполните запрос к таблице product_logs, чтобы увидеть все записи журнала.
SELECT * FROM product_logs;
В выводе теперь должно быть две записи журнала. Вторая запись, для 'Mouse', должна включать цену в своем описании, подтверждая, что ваш обновленный триггер работает.
+--------+------------+----------------------------------------------+---------------------+
| log_id | product_id | action_description | log_time |
+--------+------------+----------------------------------------------+---------------------+
| 1 | 1 | New product added: Laptop | 2024-05-27 10:30:00 |
| 2 | 2 | New product added: Mouse with price 25.00 | 2024-05-27 10:35:00 |
+--------+------------+----------------------------------------------+---------------------+
2 rows in set (0.00 sec)
Вы успешно обновили триггер.