Witam z sql w sumie zaczynam swoją zabawę, ale zastanawiam się jak najlepiej dodać rekord do bazy, ze sprawdzeniem czy on się przypadkiem tam nie znajduje. Dodam, że programuję w c# i jako bazy użyję MsSQL
Wcześniej pisząc np. stronę www i chcąc dodać nowego użytkownika robiłem tak :
SELECT COUNT(1) FROM Users WHERE Name = 'Zenon'
Sprawdzałem, czy wynik z tego zapytania == 0, jeśli tak to wykonywałem
INSERT INTO Users(Name,Password) VALUES ('Zenon','bla bla bla')
Teraz ucząc się dalej, wydaje mi się, że można to zrobić inaczej, akurat analizując książkę z podstaw SQL doszedłem do funkcji EXISTS i od razu przypomniał mi się powyższy przykład. Teraz zrobiłbym to tak :
Exists zwraca false, gdy zapytanie nie zwraca wyników, przy użyciu count, gdy nie byłoby żadnego wyniku dostalibyśmy 0, więc count użyć nie możemy./?
IF NOT EXISTS(SELECT Name FROM Users WHERE Name = 'Zenon')
INSERT INTO Users(Name,Password) VALUES ('Zenon','bla bla bla')
Widać (wg. mnie), że drugie zapytanie jest bardziej użyteczne, jednak jak wygląda sprawa z walidacją czegoś takiego ? Użytkownikowi musimy zwrócić przecież, czy założył konto, bądź zwrócić błąd, że użytkownik istnieje. Jedyne co mi przychodzi na myśl to (nie wiem jak w C# i ASP.NET -- nie kożystałem) w php była funkcja mysql_insert_id i jeśli zwróciłaby ona 0 to błąd jeśli nie = ok
Chciałbym się dowiedzieć, jak wy rozwiązujecie taki błahy "problem". Który sposób jest "bardziej" poprawny, bądź jak Wy to robicie.