数据库唯一性约束异常插入处理

Posted aeolian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库唯一性约束异常插入处理相关的知识,希望对你有一定的参考价值。

数据库

CREATE TABLE `auth_role` (
    `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 主键,
    `rolename` VARCHAR(50) NULL DEFAULT NULL COMMENT 角色名称,
    `adduser` INT(11) NULL DEFAULT NULL COMMENT 添加人,
    `addtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 添加时间,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `rolename` (`rolename`)
)COMMENT=统一平台角色
COLLATE=utf8_general_ci
ENGINE=InnoDB
ROW_FORMAT=COMPACT
AUTO_INCREMENT=15;

Controller

    @RequestMapping(value="/insertSelective",method={RequestMethod.GET,RequestMethod.POST})
    @ResponseBody
    public Object insertSelective(Auth_role record,HttpSession session){
        Userinfo sessionUserinfo = (Userinfo)session.getAttribute("CURR_USER");
        String sessionuserid = sessionUserinfo.getUserid().toString();
        record.setAdduser(Integer.parseInt(sessionuserid));
Map map
= new HashMap(); int result = 0; /*异常处理*/ try { result = service.insertSelective(record); }catch (org.springframework.dao.DuplicateKeyException e){ /*异常处理截获流程,如果是存在DuplicateKeyException则是重名,直接返回到前端,id主键为自增长,不会重复*/ map.put("code", "fail"); map.put("msg", "该角色名已存在!"); return map; } /*正常返回流程*/ if (result == 1) { map.put("code", "success"); map.put("msg", CN_MessageEnum.AddSuccess.getName()); }else { map.put("code", "fail"); map.put("msg", CN_MessageEnum.AddFailed.getName()); } return map; }

 

以上是关于数据库唯一性约束异常插入处理的主要内容,如果未能解决你的问题,请参考以下文章

处理因插入重复值而导致的唯一约束异常

休眠约束违反异常挂起sql server

“ORA-00001:违反了唯一约束”,即使使用异常

二十异常捕获及处理详解

使用 JDBC 和唯一约束进行批量插入

MySQL # MySQL的几种插入语句,解决唯一性约束