我对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
。
所以,我想我的问题分为两部分:
答案 0 :(得分:2)
您可以将伪行new
或old
用作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;
请注意,我没有测试过,但它应该给你一般的想法。