2010-10-01 1 views
2

У меня этот тест стол с одной записью строки и 2 индексов, первый первичный ключ, а затем уникальный индекс для а и Ь столбцов:ПО DUPLICATE KEY UPDATE с несколькими индексом поля

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. Но это оленья кожа сЛУЧИЛОСЬ, и я не получаю никаких ошибок. Что я делаю неправильно?

ответ

7

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

+1

mea culpa ... вы правы 100%. Спасибо –