2014-07-01 47 views
0

我有兩個表,一個用於存儲用戶報告,另一個用於存儲用戶。mysql - 自動更新另一個表中的事件

1. Report_table 
-----report_id(P)-----user_id-------- 
     001   user1 
     002   user1 
     003   user3 


2.Users table 
-------user_id(P)-------no_of_reports 
     user1    2 
     user2    0 
     user3    1 

(說REPORT_ID:004,USER_ID:USER1)現在,每當報告插入report_table,我更新這樣既表。

INSERT INTO reports_table VALUES (004,`user1`) 
INSERT INTO users_table (user_id,no_of_reports) VALUES (`user1`,1) 
    ON DUPLICATE KEY UPDATE no_of_reports=no_of_reports+1; 

是否有這樣做的更好的辦法.. 是否有當插入一個新的報告自動遞增的no_of_reports計數器的方法嗎?

回答

1

您需要一個觸發器:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html它應在reports_table上的每次插入操作後觸發。

CREATE TRIGGER update_report_cnt AFTER INSERT ON reports_table 
FOR EACH ROW 
    BEGIN 
     UPDATE users_table SET no_of_reports = no_of_reports + 1 where user_id = NEW.user_id; 
    END; 

(我不知道語法是正確的。我思前一個INSERT觸發器也將工作)

+0

你如果users_table中沒有該用戶的行,則必須通過'INSERT ON DUPLICATE KEY'更改'UPDATE'。 – Pipala