捕获重复键插入异常

Jos*_*osh 10 java mysql try-catch

我有一个名为唯一主键列的表id.有时,当我执行INSERT查询时,我收到错误,因为该id值已被使用.

我可以用try和捕获这个特定的错误catch吗?

Dan*_*iel 12

看起来mysql正在为重复的主键抛出1062错误代码.您可以检查sql异常的错误代码:

public static final int MYSQL_DUPLICATE_PK = 1062;

try{
    //code that throws sql exception
} catch(SQLException e){
    if(e.getErrorCode() == MYSQL_DUPLICATE_PK ){
        //duplicate primary key 
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,此方法不是跨数据库供应商,因为不同的供应商可能具有不同的重复PK错误代码.

  • 为了完整性 - 在Oracle下我相信返回的错误代码是"1"[见这里](http://www.dba-oracle.com/sf_ora_00001_unique_constraint_violated.htm). (2认同)