2

我对 MYSQL 中的触发器相对较新,如果这是我想要做的一件非常基本的事情,我很抱歉。我找到了如何设置一个允许静态更新的方法,但是我没有看到任何关于如何使用初始更新中的一个字段作为触发器语句中的变量

例子:

表 1 items

id | name | total_stock
1 | item | 8
2 | item2 | 0

表 2 item_options,:

id | item_id | option | stock
1 | 1 | test | 5
2 | 1 | test2 | 3
3 | 2 | test | 0

如果我再更新item_options

UPDATE `item_options` SET `stock`=7 WHERE `id`=1

或将新项目插入item_options

INSERT INTO `item_options` (`item_id`,`option`,`stock`) VALUES ('2','add','2')

然后我想(如果可能的话)使用触发器来更新表total_stockitems的 SUMstockitem_options表中具有相同对应的item_id.

所以,我想我的问题分为两部分:

  1. 这可能吗?
  2. 有人可以指出我如何做到这一点的正确方向吗?
4

1 回答 1

2

您可以使用伪行newold如此处所述

它应该是这样的:

CREATE
TRIGGER my_trigger after insert, update
ON item_options FOR EACH ROW 
BEGIN
    update items set total_stock = (select sum(stock) from item_options where item_id = new.item_id) where item_id = new.item_id;
END;

请注意,我没有测试过它,但它应该给你一个大致的想法。

于 2012-07-04T09:49:17.623 回答