我承认,这是我的第一个MySQL触发器。MySQL版本为8.0。
我有一张定单和定单单的桌子。在orders表中,我有一个列,它存储所有行项的总数。我需要一个触发器,每次为该顺序添加或更改行项时都会更新总数。到目前为止,我的情况如下:
CREATE TRIGGER update_line_item_total
AFTER INSERT
ON orderlines.price FOR EACH ROW
BEGIN
-- variable declarations
DECLARE li_order_id INT;
DECLARE li_total DEC;
SET li_order_id = orderlines.order_id;
SET li_total = SUM (orderlines.price) WHERE orderlines.order_id = li_order_id;
-- trigger code
UPDATE orders SET
total_lineitems = li_total
WHERE orders.order_id = li_order_id;
END;
我把它放到MySQL工作台上,结果被拒绝了。我知道声明语句、第二组语句和结束语句都被标记为不正确,但是我甚至不知道在哪里查找错误。
寻找指引和方向。
谢谢,
迈克尔弗兰克尔向导咨询集团有限公司。
发布于 2021-06-29 18:59:32
SET li_total = SUM (orderlines.price) WHERE orderlines.order_id = li_order_id;
:
这样做:
delimiter |
CREATE TRIGGER update_line_item_total
AFTER INSERT
ON orderlines.price FOR EACH ROW
BEGIN
-- variable declarations
DECLARE li_order_id INT;
DECLARE li_total DEC;
declare li_total_temp dec;
SET li_order_id = orderlines.order_id;
select orderlines.price into li_total_temp WHERE orderlines.order_id = li_order_id;
SET li_total = li_total + li_total_temp;
-- trigger code
UPDATE orders SET
total_lineitems = li_total
WHERE orders.order_id = li_order_id;
END |
delimiter ;
https://stackoverflow.com/questions/68183958
复制相似问题