复合键时插入DUPLICATE KEY UPDATE

时间:2013-06-08 09:15:09

标签: php mysql

我只想在3个现有列(IDTypeYear)的组合不唯一的情况下在MySQL表中插入新行。如果这3列匹配,我想只更新字段'Val'。

这是表格:

 CREATE TABLE IF NOT EXISTS `Abs` (
 `ID` bigint(10) NOT NULL,
 `Type` int(11) NOT NULL,
 `Year` int(11) NOT NULL,
 `val` decimal(4,1) DEFAULT NULL, ....

这就是我创建复合索引并使用INSERT ON DUPLICATE KEY,尝试保存IF THEN块的原因。

在我的表中没有Type = 0的任何行,但是后面似乎什么也没插入。

INSERT INTO `Abs` (`ID`, `Type`, `Year`, `Val`) VALUES (141, 0, 2013, 5) 
ON DUPLICATE KEY UPDATE `Val` = 5

这是我的综合指数:     ALTER TABLE Abs     添加主键(      ID
     Type,      Year);

在这种情况下,最好的方法是什么。我认为这是RDB世界中非常常见的情况,但找不到简单的解决方案。

0 个答案:

没有答案