问题描述
- Java修改数据库表时某字段出现重复值不能修改该记录怎么继续修改下一条记录
-
Java修改数据库表的company_name字段,此字段唯一,company_name这个字段值:前面有问号的去掉以后如果和已有的company_name重复了,就不更新或者删除,前面有问号的去掉以后如果和已有的company_name没重复就去掉问号。如:?北京金瓯鼎建筑装饰工程有限公司莱州分公司和北京金瓯鼎建筑装饰工程有限公司莱州分公司两个公司,把前面有问号的去掉问号,但是有重复的,遇到有重复的不用修改此记录或者删除此记录。
String sql=" "+" update cdpt_company_info "+ "set company_name=replace(company_name , '?' ,'')"
+" where company_name like '?%' ";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
try {
ps.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
错误:Duplicate entry '北京金瓯鼎建筑装饰工程有限公司莱州分公司' for key 'company_name'
解决方案
先用 String sql1= "select count(*) from cdpt_company_info where company_name=replace(company_name , '?' ,'')";
查询下,返回>0就是已经有了。
解决方案二:
not like 不就全给更新了 ............. =.=
解决方案三:
处理之前可以先判断是否符合操作条件,如果不符合就不处理,或者尝试操作并捕获异常,在异常分支里面对不合条件的记录不作处理。
解决方案四:
where里面应该是 notlike, 不相似的时候才执行更新操作吧?
时间: 2025-01-01 15:30:10