Omijanie dodatkowej numeracji w polu unique - try/catch

0

Utworzyłem bazę danych, w której jedna tabela ma przechowywać pewne nazwy, będą one dodawane z wczytanego pliku excela, jednak nazwy te będą bardzo często się powtarzały, dlatego w celu eliminacji dodawania tych samych wpisów stwierdziłem, że najbardziej odpowiednim rozwiązaniem będzie nadanie polu bazy danych właściwości - unique.
Aby obsłużyć pojawiające się wyjątki o próbie dodania tego samego pola użyłem try/catch, wszystko działa według mojego założenia jednak nie chciałbym aby każda próba dodania nowego wpisu kończyła się na inkrementacji pola ID, ponieważ próby dodania kilku dużych plików excela mogą w znacznym stopniu podnieść licznik ID...
Prosiłbym o pewne sugestie jak rozwiązać ten problem.
Myślałem również nad sprawdzaniem za pomocą polecenia select czy dana nazwa jest już w tabeli, jednak myślę, że nie będzie to zbyt optymalne rozwiązanie problemu...

Baza danych jakiej używam to MS SQL.

0
retaliato napisał(a):

Aby obsłużyć pojawiające się wyjątki o próbie dodania tego samego pola użyłem try/catch

Wyjątki służą do obsługi sytuacji wyjątkowych, a nie takich, których się spodziewasz.

jednak nie chciałbym aby każda próba dodania nowego wpisu kończyła się na inkrementacji pola ID, ponieważ próby dodania kilku dużych plików excela mogą w znacznym stopniu podnieść licznik ID...

Jeśli nie chcesz czegoś robić, to tego nie rób. To co się dzieje, to oczywiste zachowanie bazy danych w sytuacji próby dodania błędnych danych.

Myślałem również nad sprawdzaniem za pomocą polecenia select czy dana nazwa jest już w tabeli, jednak myślę, że nie będzie to zbyt optymalne rozwiązanie problemu...

Na pewno lepsze niż rollback transakcji po stronie bazy i obsługa niepotrzebnych wyjątków w kodzie aplikacji. A przy okazji rozwiąże to Twój problem ze zwiększaniem ID.

1 użytkowników online, w tym zalogowanych: 0, gości: 1