代码之家  ›  专栏  ›  技术社区  ›  Elzo Valugi

使用多字段索引进行重复密钥更新

  •  2
  • Elzo Valugi  · 技术社区  · 14 年前

    我有一个测试表,有一行条目和两个索引,第一个是主键,然后是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
    

    1 回复  |  直到 14 年前
        1
  •  7
  •   Hammerite    14 年前

    你需要使用 ON DUPLICATE KEY UPDATE c = VALUES(c) 相反。