我遇到一个令人不安的语法错误(也许我错过了一件小事,因为几个月来我没有使用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引发此错误:不允许从触发器返回结果集