我有以下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" ;
由于此记录已存在,我需要更新该行,否则创建一个新记录。
答案 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
将无法检测到重复密钥。