6

ID仅当 3 个现有列 ( , 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 ADD PRIMARY KEY( ID,
Type, Year);

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

4

0 回答 0