Mysql
MYSQL 觸發器更新表
假設我有一張桌子,使用者。每次使用觸發器更新投票和 paymentAmt 時,如何計算它們的總和?然後,投票和 paymentAmt 將被添加到該點。我想為每個使用者(1 和 2)每次更新他們而不選擇特定的使用者 ID。我知道如何自動更新每個使用者的積分嗎?即使我更改了數據,我的觸發器也不會更新表
1) user_ID | votes | paymentAmt | point (USER) 1 10 20 30 <-- automatically updated 2 25 30 55 3 10 40 50
扳機
CREATE Trigger upd_pt AFTER UPDATE ON user FOR EACH ROW BEGIN UPDATE user set point = (select sum(votes) from user) + user.paymentAmt where user.user_ID = new.user_ID; END
我相信這是你需要的:
CREATE Trigger upd_pt BEFORE UPDATE ON user FOR EACH ROW SET NEW.point = NEW.votes + NEW.paymentAmt
這將
points
在user
記錄更新之前設置,以便儲存總數。基於MySQL 5.7 Reference Manual中的程式碼。
注意:為了獲得最佳結果,您可能還希望將其用作 INSERT 觸發器,並且可能需要調整 if
votes
或paymentAmt
can beNULL
。
如果存在儲存投票和 PaymentAmount 的表,則需要在這些表上創建觸發器以獲取 User 表上的聚合數據。如果我的理解有誤,您可能需要提供更多詳細資訊。