mysql ON DUPLICATE KEY UPDATE 演示

Posted oktokeep

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql ON DUPLICATE KEY UPDATE 演示相关的知识,希望对你有一定的参考价值。

<e>查询:INSERT INTO member_test(mem_no,flag)VALUE(‘111‘,‘1‘)

错误代码: 1062
Duplicate entry ‘111‘ for key ‘uk_mem_no‘

1.创建数据库表演示

CREATE TABLE `member_test` (
  `id` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `mem_no` INT(11) NOT NULL,
  `flag` INT(2) NOT NULL DEFAULT 0 COMMENT 是否是测试会员,0不是,1是,
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间,
  `is_delete` TINYINT(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_mem_no` (`mem_no`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT=会员测试信息;

 

2.在遇到主键冲突的时候,跳过不报错。不主键冲突则新增,否则修改(含本条记录不修改)

#查询
SELECT * FROM member_test;
#初始化
INSERT INTO member_test(mem_no,flag)VALUE(111,1);
#错误代码: 1062 Duplicate entry 111 for key uk_mem_no
INSERT INTO member_test(mem_no,flag)VALUE(111,1);


##有主键冲突修改  影响行数2
INSERT INTO member_test(mem_no,flag)VALUE(111,1)
ON DUPLICATE KEY UPDATE flag = flag - 1;

##无主键冲突新增  影响行数1
INSERT INTO member_test(mem_no,flag)VALUE(222,1)
ON DUPLICATE KEY UPDATE flag = flag;

##有主键冲突无修改 影响行数0
INSERT INTO member_test(mem_no,flag)VALUE(222,1)
ON DUPLICATE KEY UPDATE flag = flag;

 

以上是关于mysql ON DUPLICATE KEY UPDATE 演示的主要内容,如果未能解决你的问题,请参考以下文章

sql UPDATE ON DUPLICATE KEY造成MYSQL死锁现场

mysql insert on duplicate key

mysql ON DUPLICATE KEY UPDATE ;

on duplicate key mysql插入更新

mysql-on duplicate key update实现insertOrUpdate官方文档

(主键策略)ON DUPLICATE KEY UPDATE(Mysql的使用)