2013-08-06 82 views
1

這是refrence我先前的問題觸發在MySQL抱怨

rails callbacks not getting executed

現在,因爲該框架不能正常工作一段時間,我寧願想着寫一個觸發器來做到這一點

所以我觸發的樣子這樣

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 ; 

任何人有一個線索,這個問題是與觸發它抱怨

什麼

錯誤1064(42000):您的SQL語法錯誤;檢查與你的MySQL服務器版本相對應的手冊,在'=賺錢+ NEW.amount'附近使用正確的語法。

FYI有父 - 支出和sales_transactions

之間的父子關係

任何幫助

回答

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 
; 
0

你缺少一個;earning = earning + NEW.amount

而且你應該做的:

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

更新:

我的答案指出你的觸發器有什麼問題,但如果這就是你想要的所有收益,那麼你應該簡單地去做,就像eggyal的回答指出的那樣