mysql - ON DUPLICATE KEY UPDATE 正在插入新记录

标签 mysql

我有以下 SQL 架构

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" ;

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

最佳答案

您忘记声明表的主键。

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 无法检测到重复的键。

关于mysql - ON DUPLICATE KEY UPDATE 正在插入新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42342376/

相关文章:

mysql - 我的问题是如何从一个jsp页面定向到另一个jsp页面?

WHERE NOT EXISTS 的 MySQL 查询不返回任何行

php - 如何同时使用mysql更新查询和mysql插入查询?

mysql - 为什么mysql中的EVENT调度程序不执行SELECT语句?

mysql - 如何删除mysql查询中的所有特殊字符

php - 尝试使用 PHP 和 MySQL 打印注释,但没有打印任何内容

php - 使用 PHP 检查 MySQL 查询的结果是哪个表?

php - 在 API Rest 中从数组内的 2 个表中选择数据

mysql - 获取跨多个列值匹配的行

mysql - Node-mysql 过时连接