我有以下 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/