更新触发器逻辑
你的需求可能会随着时间而改变。例如,你可能希望记录更多细节。在此步骤中,你将更新触发器,使其也记录新商品的价格。
在 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)
你已成功更新了触发器。