ON DUPLICATE KEY UPDATE正在插入新记录

时间:2017-02-20 10:41:35

标签: mysql

我有以下SQL Schema

CREATE TABLE IF NOT EXISTS `video_video_sprout` (
  `video_id` int(6) default NULL,
  `sprout_video_id` varchar(25) default NULL,
  `is_video_type` tinyint(1) default NULL ,
  `someval` varchar(25) default NULL
) ;

INSERT INTO `video_video_sprout` (`video_id`, `sprout_video_id`, `is_video_type`,someval) VALUES(62, '4c9ad9b71c1fe2c6c4', 1,'empty');


INSERT INTO video_video_sprout (video_id,sprout_video_id,is_video_type)
 VALUES(62, '4c9ad9b71c1fe2c6c4', 1) ON DUPLICATE KEY UPDATE    
someval="UpdatedValue" ;

如果该行已存在,我想更新该行,否则我需要插入该行

我是这样尝试的

 INSERT INTO video_video_sprout 
            (video_id,sprout_video_id,is_video_type)
        VALUES
            (62, '4c9ad9b71c1fe2c6c4', 1) 
        ON DUPLICATE KEY UPDATE someval="UpdatedValue" ;

由于此记录已存在,我需要更新该行,否则创建一个新记录。

1 个答案:

答案 0 :(得分:2)

您忘记声明表格的主键。

CREATE TABLE IF NOT EXISTS `video_video_sprout` (
  `video_id` int(6) default NULL,
  `sprout_video_id` varchar(25) default NULL,
  `is_video_type` tinyint(1) default NULL ,
  `someval` varchar(25) default NULL,
  PRIMARY KEY (video_id, sprout_video_id)
) ;

如果没有唯一密钥,INSERT将无法检测到重复密钥。