ON DUPLICATE KEY UPDATE,唯一索引或者主键插入重复修改记录 |
您所在的位置:网站首页 › 索引可以不唯一吗 › ON DUPLICATE KEY UPDATE,唯一索引或者主键插入重复修改记录 |
解决的问题: 唯一索引或者主键插入重复修改记录表结构如下,name有唯一索引,主键是 id CREATE TABLE `unique_key_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `score` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;插入数据,执行第二次重复插入,报错 INSERT INTO `unique_key_test` (`id`, `name`, `score`) VALUES ('1', '张三', '7'); [SQL]INSERT INTO `juc_test`.`unique_key_test` (`id`, `name`, `score`) VALUES ('1', '张三', '1') [Err] 1062 - Duplicate entry '1' for key 'PRIMARY' 场景1:如果数据是导入的,id作为标识可以重复导入。有更新就更新,正常我们可能需要先查询后插入了。但是这个时候可以用到 ON DUPLICATE KEY UPDATE INSERT INTO `juc_test`.`unique_key_test` (`id`, `name`, `score`) VALUES ('1', '张三', '1')ON DUPLICATE KEY UPDATE id = '1', score = '8' ; 受影响的行: 2时间: 0.012s 场景2:如果name作为唯一条件,或者多个条件作为唯一条件,即唯一索引。比如我们用户信息三要素(姓名、身份证号、手机号)要作为唯一索引 INSERT INTO `unique_key_test` (`id`, `idcard`, `name`, `score`) VALUES ('2', '211', '张三', '8')ON DUPLICATE KEY UPDATE idcard = '211', name='张三', score = '3' ; 受影响的行: 2时间: 0.043s 扩展当插入多条数据,其中不只有表中已存在的,还有需要新插入的数据 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |