Witam, zacznę od tego, że to nie jest zwykłe pytanie w stylu "jaki napisać kod SQL do sprawdzenia czy rekord istnieje w bazie danych", bo to akurat wiem, moje pytanie dotyczy tego która z podanych przeze mnie metod jest szybsza, poprawniejsza.
Mianowicie mam tabelę z osobami w której kluczem głównym jest numer dowodu osobistego.
CREATE TABLE IF NOT EXISTS visitors (doc_number VARCHAR(255) PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50));
Z racji tego, że kluczem głównym jest numer dowodu, jest od wpisywany ręcznie przez użytkownika, więc może się zdarzyć sytuacja, że podany numer już znajduje się w tabeli.
I tu dochodzimy do sedna. Czy lepiej jest zrobić to w ten sposób, że w momencie dodawania rekordu przez JDBC mam złapać wyjątek SQLException z errorCode = 19 <- w tym momencie wiem już, że taki rekord istnieje.
Czy lepiej napisać zapytanie w SQL w stylu:
SELECT doc_number From visitors WHERE doc_number = ?
i dopiero teraz sprawdzić, czy zapytanie zwróciło jakiś element?
Która z powyższych metod będzie efektywniejsza, lepsza? A może znacie jeszcze lepszy sposób na wykonanie tego zadania?