0

私は次のことを達成しようとしています:

テーブルPlayers_goalsに、player_Johnがmatch_xxで3 つのplayer_goalsを獲得したことを追加すると、それはPlayers_goalsテーブルだけでなく、Players テーブルにも 挿入されます。また、player_John がすでに 2 ゴールを決めている場合は、5 (合計) に更新されます。

以下で使用しているテーブルを参照してください。

Players table
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| player_id    | int(4)      | NO   | PRI | NULL    | auto_increment |
| player_name  | varchar(45) | NO   | MUL | NULL    |                |
| team_name    | varchar(45) | NO   | MUL | NULL    |                |
| player_goals | int(4)      | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

Players_goals table
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| player_name | varchar(45) | NO   | MUL | NULL    |       |
| match_id    | int(4)      | NO   | MUL | NULL    |       |
| goals       | int(4)      | YES  | MUL | NULL    |       |
+-------------+-------------+------+-----+---------+-------+

どうすればこれを可能にできますか?

4

3 に答える 3

0

以下は、ロジックを理解するための単なるダミーコードであり、これを実行できます

CREATE TRIGGER goalTrigger

AFTER INSERT ( into player_goals  table )

FOR EACH ROW 
BEGIN

INSERT INTO (player table ) VALUES()
ON DUPLICATE KEY UPDATE player_goals = player_goals+current_goles

END

参考文献

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx

于 2012-04-06T13:18:15.167 に答える
0

Players_goals の ONINSERT イベントで、関連する Players 行を更新するトリガーを設定します。

于 2012-04-06T13:18:15.823 に答える
0

Players テーブルの player_goals は、最近までのすべての試合でプレーヤーが獲得したすべてのゴールの合計であると想定しました。その場合:

最初の player_goals は避ける必要がある冗長なデータです。この情報は、2 つのテーブルを結合することによってテーブル Players_goals から取得できます。

2番目: ただし、そうする必要がある場合は、そのような情報をINSERTステートメントでplayers_goalに挿入し、 UPDATEステートメントを使用してplayersテーブルに挿入できます。この場合、最初にPlayers_goalsからプレーヤーによるすべての合計ゴールを取得するか、 Players テーブルの player_goals の古い値をインクリメントする方法

于 2012-04-06T13:33:29.443 に答える