我有一个用于更新游戏时间的表格,其中列是唯一的,以避免重复。
我的问题如下:如何仅更新特定列并避免插入新行?
这是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';
答案 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`);