Mysql

MYSQL 觸發器更新表

  • September 30, 2018

假設我有一張桌子,使用者。每次使用觸發器更新投票和 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

這將pointsuser記錄更新之前設置,以便儲存總數。

基於MySQL 5.7 Reference Manual中的程式碼。

注意:為了獲得最佳結果,您可能還希望將其用作 INSERT 觸發器,並且可能需要調整 ifvotespaymentAmtcan be NULL

如果存在儲存投票和 PaymentAmount 的表,則需要在這些表上創建觸發器以獲取 User 表上的聚合數據。如果我的理解有誤,您可能需要提供更多詳細資訊。

引用自:https://dba.stackexchange.com/questions/171298