2014-02-05 43 views
1

我有2個表格:'matches''players'mysql:基於1輸入更新2個表格

在'比賽'我有單個進球和誰通過。

在'球員'中我有個人球員和進球。

當玩家的名字在'比賽'表中接近目標時,我該如何自動更新玩家在'玩家'表中得分的總進球數?

回答

2

我會創建第三個表GOALS

create table GOALS(
    GOAL_ID INT, 
    PLAYER_ID INT, 
    MATCH_ID INT, 
    GOAL_TIME DATE, 
    ETC... 
); 

然後用這個表加入到PLAYERSMATCHES表。這允許所有GOALS被存儲在一個位置。如果您需要確定玩家獲得的進球數量或比賽中的進球數量,您可以針對進球表執行簡單的count()

0

您可以爲matches表創建trigger。如果添加或刪除新記錄,觸發器將更新玩家的目標數量。

否則,你會做2個查詢:插入的戰績,更新播放記錄

+0

不會你已經變異表的問題來自同一個表算不算?如果你不選擇count,但是在觸發器中做+ 1/-1,那麼你將失敗並且發生多用戶交互 – smnbbrv

0

試試這個在您選擇的情況下觸發一個

Here third table needed 

create table GOAL(
    GID INT(PK), 
    PID INT(FK of players), 
    MID INT (FK of matches) 
); 

when This (GOAL) inserted then use a trigger used and update goal of players 

CREATE TRIGGER ins_trig AFTER INSERT ON GOAL 
    -> FOR EACH ROW 
    -> BEGIN 
    -> UPDATE players SET goals scored(GIVE THE CONDITION); 
    -> END;