将数据插入表中并使用该数据更新另一个表。

时间:2012-04-06 13:13:44

标签: php mysql sql database relational

我正在努力实现以下目标:

当我在 match_xx 中添加 player_John 已经获得3 player_goals 的表格时 Players_goals - 它没有不仅要插入 Players_goals 表格,还要插入玩家表格。如果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    |       |
+-------------+-------------+------+-----+---------+-------+

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我会在Players_goals的ONINSERT事件上设置一个触发器来更新相关的玩家行

答案 2 :(得分:0)

我认为玩家表中的player_goals是玩家在每场比赛中直到最近得分的总和。 如果是这样的话:

第一个player_goals是您必须避免的重复数据,您可以从中获取此信息 表格Players_goals加入两个表格。

第二:如果你必须这样做,你可以使用 INSERT 语句将这些信息插入到players_goal 并使用 UPDATE 语句进入玩家表, 在这种情况下,你必须首先从Players_goals获得玩家的所有总和目标,否则你必须这样做 有一种方法可以在Players表中增加player_goals的旧值