我只是在学习外键。我正在简化我的表格:
Table: item
Columns: item_id (PK), qty
Table: item_change_log
Columns: id (PK), item_id (indexed), change_value
两张桌子都是INNODB。
每次更改项目级别时,更改的数量都会记录在item_change_log.change_value
中。我希望change_value自动添加/减去item.qty
。
预期行为:
用户创建项目X. item.item_id = X, qty = 0
。尚未在item_change_log中创建记录。
用户将X的数量更改为2. item_change_log: id = 1, item_id = X, change_value = 2
。此change_value会通过外键自动增加item.qty = 2
。
我知道如何让item id的外键相互看到,但我不知道如何添加“math”元素,或者如果可能的话。
谢谢!
答案 0 :(得分:3)
这不是通过外键处理的。相反,请查看item_change_log
表格上的creating a trigger,无论何时插入行,都会更新item
。
答案 1 :(得分:3)
你需要的是一个触发器,但是哪个?
所以我们走了
CREATE TRIGGER update_item_table AFTER INSERT ON item_change_log
FOR EACH ROW BEGIN
UPDATE item SET qty=qty+NEW.qty WHERE item_id=NEW.item_id;
END;