2014-11-05 16 views
8

Mam tabelę z unikalną kolumną klucza podstawowego o nazwie id. Czasami podczas wykonywania zapytania INSERT pojawia się błąd, ponieważ wartość id jest już używana.Złap duplikat wstawiania klucza wyjątek

Czy mogę złapać ten konkretny błąd za pomocą try i catch?

+2

Co nie działa przy korzystaniu z try/catch? – sp00m

+0

Zrobiłem, ale to nie łapie. – Josh

+0

Czy możesz pokazać ten kod? – sp00m

Odpowiedz

9

Wygląda na to, że mysql rzuca 1062 kod błędu dla duplikatu klucza podstawowego. Można sprawdzić kod błędu dla sql wyjątku:

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 
    } 
} 

Zauważ, że takie podejście nie jest cross sprzedawca bazy danych, ponieważ różne producentów mogą mieć różne kody błędów powtarzających PK.

+0

Myślałem, że 'SqlException' był klasą, ale nie był pewien. Świetny pomysł na sprawdzenie konkretnego kodu błędu - nie miałem pojęcia, że ​​było to możliwe. – AdamMc331

+1

Dla kompletności - Pod Oracle Wierzę, że zwrócony kod błędu to '1' [patrz tutaj] (http://www.dba-oracle.com/sf_ora_00001_unique_constraint_violated.htm). – OldCurmudgeon

Powiązane problemy