我有一个表,表中有一个称为id
的唯一主键列。有时,当我执行INSERT
查询时,我得到一个错误,因为id
值已被使用。
我可以使用try
和catch
捕获此特定错误吗?
最佳答案
看起来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可能具有不同的错误代码。