库存表:
库存历史表:
查询:
INSERT INTO inventory_history (SKU, Quantity, timestamp)
SELECT SKU, Quantity, modifiedtime FROM inventory WHERE modifiedtime BETWEEN '2016-12-25 00:00:00' AND '2016-12-26 00:00:00';
触发器:
CREATE TRIGGER `sold_diff` BEFORE INSERT ON `inventory_history`
FOR EACH ROW begin
declare prev_quantity int(11) default 0;
declare prev_sku varchar(255) default null;
select sku
into prev_sku
from inventory_history
where prev_sku = NEW.sku
order by id desc
limit 1;
select quantity
into prev_quantity
from inventory_history
order by id desc
limit 1;
set NEW.sold = prev_quantity
;
end
结果:
现在,它的设置方式是从上一行开始prev_quantity
,并将其放入sold
列。
我无法找到一种方法将SKU
绑定到prev_quantity
,以便它会从相应的SKU中获取之前的数量值。
期望的结果:
我已经对两个声明的WHERE
条款搞砸了,但没有什么工作正常......所以我认为这不是正确的道路。
如何实现这一目标?
答案 0 :(得分:0)
我认为你采取了错误的做法。
您似乎想在 inventory
表上插入一个插件。插入或更新(或删除)新值后,您会在inventory_history
表格中插入一行,其中包含old
和new
值。
然后,您不需要inventory_history
上的显式插入。