I am trying to create a DB that lists the calories for individual groceries as well as for items that are composed of two or more groceries. So far I have created two tables and one trigger. The trigger recalculates the calories of composed items every time the amounts are updated.

How do I take care of changes in the kcal column? Is it possible to create a second trigger, that triggers the update_kcal trigger?

Code:
select * from grocery;
+----+------------------+------+
| id | name             | kcal |
+----+------------------+------+
|  1 | Black Coffee     |    0 |
|  2 | Sugar            |  387 |
|  3 | Milk             |   42 |
|  4 | My Custom Coffee | NULL |
+----+------------------+------+
Code:
select * from grocery_composition;
+------------+---------------+--------+
| fk_grocery | fk_ingredient | amount |
+------------+---------------+--------+
|          4 |             1 |   80.0 |
|          4 |             2 |   15.0 |
|          4 |             3 |    5.0 |
+------------+---------------+--------+
The foreign keys are setup as this:

Code:
grocery_composition.fk_grocery -> grocery.id
grocery_composition.fk_ingredient -> grocery.id

Code:
CREATE TRIGGER `update_kcal` AFTER UPDATE ON `grocery_composition` FOR EACH ROW
UPDATE
  `grocery`,
  (
    SELECT
      SUM(grocery.kcal / 100 * grocery_composition.amount) as kcal,
    FROM
      `grocery_composition`
    JOIN
      `grocery` ON `grocery`.`id` = `grocery_composition`.`fk_ingredient`
    WHERE
      `grocery_composition`.`fk_grocery` = NEW.`fk_grocery`
  ) AS `total`
SET
  `grocery`.`energy` = `total`.`kcal`,
WHERE
  `id` = NEW.`fk_grocery`