我有一个表,表中有一个称为id的唯一主键列。有时,当我执行INSERT查询时,我得到一个错误,因为id值已被使用。

我可以使用trycatch捕获此特定错误吗?

最佳答案

看起来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
    }
}

注意,这种方法不是跨数据库供应商的,因为不同的供应商对于重复的PK可能具有不同的错误代码。

09-30 16:53
查看更多