在重复的密钥问题

时间:2014-12-06 11:14:07

标签: mysql

我有一个用于更新游戏时间的表格,其中列是唯一的,以避免重复。

我的问题如下:如何仅更新特定列并避免插入新行?

这是query

我执行了此代码,它仍然进入新行而不是仅更新Time列:

INSERT INTO `leaderboard` (`Persona`, `Level`, `Track`, `Car`, `Mode`, `Time`, 
                           `Date`, `Timestamp`, `HMS`) 
                           VALUES ('STIG', 80, 'SPA FRANCORCHAMPS', 
                                  'AUDI R8 LMS ULTRA', 'HD', '02:17.332',
                                  '2014-12-06', '1417825487', '1:24:47')
ON DUPLICATE KEY UPDATE `Time` = '02:17.332'; 

1 个答案:

答案 0 :(得分:1)

您实际上是在

中创建复合unique
ALTER TABLE `leaderboard`
ADD UNIQUE KEY `Persona` (`Persona`,`Level`,`Track`,`Car`,`Mode`,`Time`,`Date`,`Timestamp`,`HMS`);

这意味着元组(Persona, Level, Track, Car, Mode, Time, Date, Timestamp, HMS)将是唯一的。但是,时间列将被更新,很可能它们不是唯一的。

也许您想要做的是:

ALTER TABLE `leaderboard`
ADD UNIQUE KEY `Persona` (`Persona`,`Level`,`Track`,`Mode`);
相关问题