使用表中的变量创建触发器

时间:2012-07-04 09:38:09

标签: mysql

我对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_stock表中的items,并在stock表中使用item_options的SUM使用相同的item_id

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

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

1 个答案:

答案 0 :(得分:2)

您可以将伪行newold用作described here

应该是这样的:

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;

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