首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要编写MySQL触发器的指导

需要编写MySQL触发器的指导
EN

Stack Overflow用户
提问于 2021-06-29 18:31:20
回答 1查看 35关注 0票数 1

我承认,这是我的第一个MySQL触发器。MySQL版本为8.0。

我有一张定单和定单单的桌子。在orders表中,我有一个列,它存储所有行项的总数。我需要一个触发器,每次为该顺序添加或更改行项时都会更新总数。到目前为止,我的情况如下:

代码语言:javascript
运行
复制
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工作台上,结果被拒绝了。我知道声明语句、第二组语句和结束语句都被标记为不正确,但是我甚至不知道在哪里查找错误。

寻找指引和方向。

谢谢,

迈克尔弗兰克尔向导咨询集团有限公司。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 18:59:32

SET li_total = SUM (orderlines.price) WHERE orderlines.order_id = li_order_id;

  1. 您的问题在下面一行:

  1. 添加分隔符.

这样做:

代码语言:javascript
运行
复制
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 ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68183958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档