2012-07-04 37 views
2

我对MYSQL中的触发器比较陌生,所以对不起,如果这是我试图做的一件非常基本的事情。我发现如何设置一个允许静态更新,但我还没有看到有关如何使用的一个字段从inital更新作为变量触发声明使用表中的变量创建触发器

例子里的任何东西:

表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') 

那么我想(如果可能)使用触发器在items表更新total_stockstock在SUM item_options表与相应的item_id相同。

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

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

回答

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; 

请注意,我没有测试它,但它应该给你的总体思路。