关于复制密钥问题的更新


UPDATE ON DUPLICATE KEY issue

我正在尝试制作:

$sql = mysql_query("SELECT COUNT(fk_player_id) count FROM wr_year WHERE fk_player_id=$currplayer AND year=2013");
$row = mysql_fetch_assoc($sql);
if($row['count'] == 0){
   mysql_query("INSERT INTO wr_year (fk_player_id, year, points) VALUES ($currplayer, 2013, $points)");
} else {
   mysql_query("UPDATE wr_year SET points=points+$points WHERE fk_player_id=$currplayer AND year=2013");
}

进入:

mysql_query("INSERT INTO wr_year (fk_player_id, year, points) VALUES ($currplayer, 2013, $points)
ON DUPLICATE KEY UPDATE points=points+$points");

但这有效吗?我如何确保它只在fk_player_id和年份上检查"复制",并且可以这样做?

提前感谢;-)

ON DUPLICATE KEY检查索引冲突,以确定是否应该插入或更新,因此您需要首先在要检查的两列上创建一个唯一的索引;

CREATE UNIQUE INDEX uix_wr_year ON wr_year (fk_player_id, year);

之后,如果表中已经存在相同的fk_player_id/年组合,它将进行更新。

使用VALUES函数。

试试这个

     INSERT INTO wr_year (fk_player_id, year, points) VALUES ($currplayer, 2013, $points)
     ON DUPLICATE KEY UPDATE points= VALUES(points+$points)

参见http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html