Използвайте unique constraint
. Опитайте се да вмъкнете/актуализирате записа и да хванете изключението, хвърлено, когато уникалното ограничение е нарушено. Това е единственият начин да се гарантира уникален имейл адрес; първо проверката и след това актуализирането е предразположено към проблеми с едновременността, тъй като е възможно някой друг да актуализира своя/нейния запис до същата стойност, която се опитвате да зададете непосредствено след като сте направили проверката и преди да актуализирате записа.
Също така:научете как да използвате where
-клаузи. Сега извличате ВСИЧКИ записи, преглеждате ги и т.н., което отнема ненужно много ресурси, отнема твърде много време и е обикновена загуба. Ако искате да проверите за запис, отговарящ на критерии, пишете:
Select foo, bar from table where baz = 123
Където baz = 123
е вашият критерий. Представете си какво ще се случи, когато имате 500 или дори 500 000 записа в текущата си настройка. Базата данни ще изпълни вашата заявка, ще събере ВСИЧКИ редове от тази база данни, ще ги прехвърли във вашето приложение, където вашето приложение ще повтори всичките 500 000 резултата. Или помолите DB да направи това, в което е добър (и защо го използвате на първо място):Дайте ми/всички записи, които отговарят на критерий X. Ще получите 1 или нито един запис (предвид уникалния ограничение):1 =някои записи отговарят на вашия критерий, нито един =няма записи. Спестява прехвърляне и "ръчно трябва да се преглеждат" 499 999 записа;-)