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
Hocam merhaba;
Hazırladığınız çözümlere dayalı olarak pivot ve unpivot ile ilgili de makale hazırlar mısınız?