我只想在3个现有列(ID
,Type
,Year
)的组合不唯一的情况下在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世界中非常常见的情况,但找不到简单的解决方案。