Etiket arşivi: kayıt tekrarı önlemek

SQL Kullanıcı Kaydı Tekrarı Önlemek

sql kullanıcı kontrol tekrar önlemek

Veritabanında bulunan kullanıcı listemize ait kullanıcıların kayıt tekrarını önleyerek aynı kullanıcının birden fazla kez kaydolmasını önleyebilir, ayrıca kullanıcı adının eşsiz olmasını sağlayabiliriz.

Bu işlemin tsql ile nasıl yapılacağını aşağıda örnekledim

Kullanıcı kaydını kullanıcı adı değerine göre kontrol ettik, örnekten yola çıkarak başka değerlerle de kontrol yapabilirsiniz.

İlk önce kullanacağımız değişkenleri tanımlıyoruz

Daha sonra belirtilen kullanıcı adına sahip başka bir kullanıcının kullaniciListesi tablosunda var olup olmadığını sorguluyoruz, eğer yoksa yeni bir kayıt olarak insert yapıyoruz ve yeni kaydın primary key değerini “IslemSonucu” isimli değişkene aktarıyoruz

Eğer daha önce aynı isimde bir kullanıcı tabloya kayıt yapılmışsa IslemSonucu değişkenine sıfır değeri veriyoruz

En son da IslemSonucu değişkenini select yapıyoruz, böylece tek seferde hem kayıt kontrolü, eğer uygunsa da kayıt yapmış oluyoruz

Veritabanı tarafında böyle bir script hazırladıktan sonra program tarafında şöyle bir mantık kurmalıyız

Eğer bu scriptten dönen sonuç sıfır ise bu kullanıcı adına daha önce kayıt açılmış, yani buna göre uyarı vermeliyim vs..

Eğer scriptten dönen sonuç sıfırdan büyükse yeni kullanıcıyı oluşturdum, id si de budur. artık bu id ile o kullanıcının bilgilerini mi gösteririm, oturum mu açtırırım veya başka işlemler mi yaparım, bu tamamen bana kalmıştır.

Bu kontrolü veritabanında yapmanın avantajı bir kaç kez program-veritabanı arasında gidiş-geliş yapmadan tek seferde sorunu çözebilmek.

Bu hem uygulamanın daha hızlı çalışmasını sağlar, hem de kod karmaşasını önler.

Veritabanı ile çalışan uygulamalar yazarken ne programa fazla yüklenin ne de sql e, ikisini dengeli kullanın.

Bu şekilde iki tarafta da kod temizliği, veri trafiğinin az olması gibi avantajlarınız olur.


declare @KullaniciAdi as varchar(max) =  'deneme'
declare @Sifre as varchar(max) = '1234'
declare @MailAdresi as varchar(max) = 'deneme@deneme.com'
declare @IslemSonucu as int

if(not exists(
select top 1 KullaniciId from KullaniciListesi where KullaniciAdi = @KullaniciAdi
)) begin
insert into KullaniciListesi (KullaniciAdi, MailAdresi, Sifre) values (@KullaniciAdi, @MailAdresi, @Sifre)
set @IslemSonucu = @@IDENTITY
end else begin
set @IslemSonucu = 0
end
select @IslemSonucu as IslemSonucu