ON DUPLICATE KEY UPDATE с многопольным индексом - PullRequest
2 голосов
/ 01 октября 2010

У меня есть эта тестовая таблица с одной записью строки и 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. Но это не произошло, и я не получаю ошибок. Что я делаю не так?

1 Ответ

7 голосов
/ 01 октября 2010

Вам нужно использовать ON DUPLICATE KEY UPDATE c = VALUES(c) вместо.

...