トリガーロジックの更新
要件は時間とともに変更される可能性があります。たとえば、より詳細な情報をログに記録したい場合があります。このステップでは、トリガーを更新して、新しい製品の価格もログに記録するようにします。
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;
出力には、2 つのログエントリが表示されるはずです。「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)
トリガーを正常に更新しました。