我創建了一個簡單的UPDATE AFTER INSERT
觸發器,用於求和兩個DECIMAL(10,2)
字段,並用求和值更新第3個DECIMAL(10,2)
字段。如何求和兩個字段並將結果自動存儲在MySQL表的第三個字段中?
觸發代碼:
delimiter |
CREATE TRIGGER calc_ttl_cost AFTER INSERT ON buybox_rec
FOR EACH ROW
BEGIN
UPDATE buybox_rec SET total_cost = (price+shipping_cost);
END;
|
我使用phpMyAdmin來運行SQL命令,所以我知道,觸發器被成功創建。此外,如果我單獨運行UPDATE buybox_rec SET total_cost = (price+shipping_cost);
SQL語句,它將按預期工作。 (我也嘗試過使用與字段名稱相反的代碼,但是如果這樣做我不會寫所有這些)
問題是,當我插入一個新行時,觸發器沒有'牛逼的工作,這個錯誤被拋出:
#1442 - Can't update table 'buybox_rec' in stored function/trigger
because it is already used by statement which invoked this stored
unction/trigger.
的錯誤似乎像是某種遞歸或循環引用的問題,但我想不通的地方/有什麼問題。
我也嘗試創建一個存儲過程,並從觸發器內調用它來嘗試獲得相同的結果,但我得到了同樣的錯誤。
我檢查了一堆與MySQL UPDATE觸發器相關的其他SO問題,並做了一些Google搜索,但我在這裏。
這是否超出了MySQL的範圍?這似乎是一個容易的任務。
有誰知道我是如何自主完成這項任務的? (AKA我不想聽到關於通過PHP事後總結的領域,例如)
感謝所有幫助