1

这是对我之前的问题的参考

rails回调没有被执行

现在由于该框架有一段时间无法正常工作,我宁愿考虑编写一个触发器来执行此操作

所以我的触发器看起来像这样

DELIMITER $$
CREATE TRIGGER sales_earning AFTER INSERT ON sales_transactions  FOR EACH ROW  
BEGIN
   DECLARE earning INT;
   SET earning = (select sales_earning from payouts where id = NEW.payout_id);
   earning = earning + NEW.amount   
   UPDATE payouts SET sales_earning = earning where id = NEW.payout_id ;
END $$
DELIMITER ;

任何人都知道触发器的问题是什么它抱怨

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '= Earning + NEW.amount 附近使用的正确语法;

仅供参考,支出和 sales_transactions 之间存在父子关系

任何帮助

4

2 回答 2

1
CREATE TRIGGER sales_earning AFTER INSERT ON sales_transactions FOR EACH ROW  
  UPDATE payouts
  SET    sales_earning = sales_earning + NEW.amount
  WHERE  id = NEW.payout_id
;
于 2013-08-06T10:20:58.920 回答
0

你错过了一个;之后earning = earning + NEW.amount

你应该这样做:

SET earning = (select sales_earning from payouts where id = NEW.payout_id) + NEW.amount;

更新:

我的回答指出了你的触发器有什么问题,但如果这就是你想要对收入做的所有事情,你应该像 Eggyal 的回答所指出的那样简单地做

于 2013-08-06T10:18:40.150 回答