2

我有这个带有一个行条目和 2 个索引的测试表,第一个是主键,然后是 a 和 b 列的唯一索引:

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) NOT NULL,
  `b` int(11) NOT NULL,
  `c` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `a` (`a`,`b`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

--
-- Dumping data for table `test`
--

INSERT INTO `test` (`id`, `a`, `b`, `c`) VALUES
(1, 1, 2, 3);

现在我正在尝试执行以下操作

INSERT INTO test
   (a, b, c)
VALUES (1, 2, 100)
ON DUPLICATE KEY UPDATE c = c

并且我期望将 c 列的值从 3 更新为 100。但这并没有发生,我没有收到任何错误。我究竟做错了什么?

4

1 回答 1

7

你需要ON DUPLICATE KEY UPDATE c = VALUES(c)改用。

于 2010-10-01T12:45:12.477 回答