2

このテストテーブルには、1つの行エントリと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 に答える