具有相同列名的上一行的MySQL触发器值

时间:2017-01-01 22:52:15

标签: mysql

库存表:

enter image description here

库存历史表:

enter image description here

查询:

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

结果:

enter image description here

现在,它的设置方式是从上一行开始prev_quantity,并将其放入sold列。

我无法找到一种方法将SKU绑定到prev_quantity,以便它会从相应的SKU中获取之前的数量值。

期望的结果:

enter image description here

我已经对两个声明的WHERE条款搞砸了,但没有什么工作正常......所以我认为这不是正确的道路。

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我认为你采取了错误的做法。

您似乎想在 inventory 表上插入一个插件。插入或更新(或删除)新值后,您会在inventory_history表格中插入一行,其中包含oldnew值。

然后,您不需要inventory_history上的显式插入。