插入MYSQL后UPDATE触发器中的语法错误

时间:2018-09-28 14:45:08

标签: mysql insert database-trigger

我遇到一个令人不安的语法错误(也许我错过了一件小事,因为几个月来我没有使用SQL。)

  • 我有一个发票表,可以保存每个发票的总销售额 出售。
  • 我有一个客户表,可以保持客户平衡。

我想做的是在插入发票后更新客户余额到具有客户ID的发票表中。

我对此进行了一些研究,但我无法将其与我在人们的问题和答案中发现的内容结合在一起。

这是我尝试与phpmyadmin界面一起使用的触发器,但每次都会出现语法错误。

BEGIN
DECLARE @sonsatistutari decimal(16,2), @ilkbakiyemiktari decimal(16,2), 
@customerid int

SET @sonsatistutari=(SELECT total FROM invoices WHERE id=(MAX(id))) 

SET @customerid=( SELECT csd FROM invoices WHERE id=MAX(id))

SET @ilkbakiyemiktari=(SELECT balance FROM customers WHERE csd=@customerid)

UPDATE customers SET balance=(@ilkbakiyemiktari-@sonsatistutari) WHERE 
csd=@customerid
END

感谢您的帮助和建议。

我确实看过这个问题的重复部分,并像这样编辑我的代码:

BEGIN
DECLARE sonsatistutari decimal(16,2);
DECLARE ilkbakiyemiktari decimal(16,2);
DECLARE customerid int;

SELECT sonsatistutari=(SELECT total FROM invoices WHERE id=(MAX(id))); 

SELECT customerid=( SELECT csd FROM invoices WHERE id=MAX(id));

SELECT ilkbakiyemiktari=(SELECT balance FROM customers WHERE csd=@customerid);

UPDATE customers SET balance=(ilkbakiyemiktari-sonsatistutari) WHERE csd=customerid;
END

我使用的是Max(id),因为我想每次插入最新发票 更新余额

Mysql引发此错误:不允许从触发器返回结果集

0 个答案:

没有答案