具有多字段索引的 ON DUPLICATE KEY UPDATE
我有这个测试表,其中有一个行条目和 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。但这并没有发生,我也没有收到任何错误。 我做错了什么?
I have this test table with one row entry and 2 indexes, the first a primary key and then a unique index for a and b columns:
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);
Now I am trying to do the following
INSERT INTO test
(a, b, c)
VALUES (1, 2, 100)
ON DUPLICATE KEY UPDATE c = c
AND I was expecting to have the value for column c updated form 3 to 100. But this doesnt happend and I get no errors.
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要改用
ON DUPLICATE KEY UPDATE c = VALUES(c)
。You need to use
ON DUPLICATE KEY UPDATE c = VALUES(c)
instead.