Użyj unique constraint
. Spróbuj wstawić/zaktualizować rekord i przechwycić wyjątek zgłoszony, gdy zostanie naruszone ograniczenie przez unikalność. Tylko w ten sposób można zagwarantować unikalny adres e-mail; najpierw sprawdzanie, a następnie aktualizowanie jest podatne na problemy ze współbieżnością, ponieważ możliwe jest, że ktoś inny zaktualizuje swój rekord do tej samej wartości, którą próbujesz ustawić tuż po wykonaniu sprawdzenia i przed aktualizacją rekordu.
Również:dowiedz się, jak używać where
-klauzule. Teraz pobierasz WSZYSTKIE rekordy, powtarzasz je itd., co zajmuje niepotrzebnie dużo zasobów, zajmuje zbyt dużo czasu i jest zwykłym marnotrawstwem. Jeśli chcesz sprawdzić rekord spełniający podane przez Ciebie kryteria:
Select foo, bar from table where baz = 123
Gdzie baz = 123
jest twoim kryterium. Wyobraź sobie, co by się stało, gdy w obecnej konfiguracji masz 500, a nawet 500 000 rekordów. Baza danych wykona Twoje zapytanie, zbierze WSZYSTKIE wiersze z tej bazy danych, przeniesie je do Twojej aplikacji, gdzie Twoja aplikacja będzie iterować wszystkie 500 000 wyników. Lub poproś DB, aby zrobił to, w czym jest dobry (i dlaczego go używasz w pierwszej kolejności):Daj/wszystkie rekordy, które pasują do kryterium X. Otrzymasz 1 lub żaden rekord (biorąc pod uwagę unikatowe ograniczenie):1 =niektóre rekordy spełniające kryterium, brak =brak rekordów. Oszczędza przenoszenie i „ręczne przeglądanie” 499 999 rekordów;-)