public String createStudentid() {
        // 生成学号工具类
		String studentid = StudentIdGenerator.generateStudenId();
		try {
			usermapper.insertStudentid(studentid);
		}catch(Exception e) {
            // 异常处理
			if(e.getCause() instanceof MySQLIntegrityConstraintViolationException)
			log.warn("学号{}已存在,重新生成",studentid);
			createStudentid();
		return studentid;
                                    当unique列在一个UNIQUE键上插入包含重复值的记录时,我们可以控制MySQL如何处理这种情况:使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。
mysql> create table menus(id tinyint(4) not null auto_increment,
  -> label varchar(10) null,url varchar(20) null,unique key(id));
Query OK, 0 rows affected (0.13 sec)
mysql> insert int
                                    1.采用force index 强行选择一个索引。
2.修改sql语句、引导MySQL使用我们期望的索引。
3.在有些场景下,我们可以新建一个更适合的索引,来提供给优化器做选择,或删除掉误用的索引。
由于索引统计信息的不准确,可以用analyze table来解决。
而对于其它优化器误判断的情况,你可以在应用端用force index 来强行指定索引,也可以通过修改语句来引导优化器,还可以通过增加或者删除索引来绕过这个问题。
在往数据库插入数据的时候,需要判断某个字段是否存在,如果存在则执行更新操作,如果不存在则执行插入操作,如果每次首先查询一次判断是否存在,再执行插入或者更新操作,就十分不方便。
有可能涉及事务或者锁,这样就变得复杂了。那么有没有什么简单的方法来实现更新插入操作呢?
ON DUPLICATE KEY UPDATE
这个时候可以给这个字段(或者几个字段)建立唯一索引,同时使用以下 sql 语句进行...
     circleLikeService.insertSelective(circleLike);
     Map<String, Object> map = new HashMap<>();
     map.put("c...
                                    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Ma...
                                    MYSQL 有  insert ignore into  这个关键字他这样,当违背了唯一约束的时候~就会直接跳过,不会报错。如果没有添加关键字,在批量操作时会导致程序终止INSERT IGNORE INTO `sk_prolong_member` (`user_id`, `cate_id`, `sum`)VALUES	('110106', '100', '15')...
                                    业务中为了避免重复数据的产生,除了在代码层级做处理之外,还会在数据库表中增加唯一索引来做最后的校验,项目中唯一索引在冲突的时候是以代码抛异常的形式来阻止脏数据的产生,而异常这个东西,说好也好,说不好也不好,因为在异常产生的时候,需要去还原错误场景并提供详细的错误信息,所以异常抛的太多了,性能肯定好不到哪里去,而且在有些特定的场景下甚至是不需要唯一索引的,当有重复的数据进来时,直接视作更新操作,查阅...
                                    MySQL都有哪些引擎?常见的有三种,InnoDB、MyISAM、MEMORY。InnoDB有以下的特性:支持事务,支持回滚等支持外键支持并发性支持行级锁不支持全文索引InnoDB读写效率相对较差,数据存储占用空间大。MyISAM特性有:不支持事务不支持外键不支持并发仅支持表级锁支持全文索引MyISAM占用空间小,处理速度快。MyISAM自己维护了计数器,因此对于 select count(*) ...
|-- java.sql.SQLException
	|-- SQLNonTransientException
		|-- SQLIntegrityConstraintViolationException
//新增机型
			aircraftService.save(aircraft);
			return R.ok(aircraft.getId());
		}catch (Exception e){
			Thr..