Ara:

Şu an misafir modundasın. YazılımDevi olmak ister misin? Giriş Yap / Kayıt Ol

Makale Hakkında!

SQL Server da Rule (Kural) Kavrami Makale Yazarı Okunma Sayısı Eklenme Tarihi
Salih Demiroğ 1915 14.03.2009

Makale Detayı

SQL SERVERDA RULE (KURAL) KAVRAMI ve SQL SERVERDA RULE OLUSTURMAK

Merhaba arkadaslar bu makalemizde SQL  Serverda kullanilan Rule yapisina deginecegim. Adindan da anlasilacagi gibi Rule, SQL Serverda kural olusturmak demektir.

Peki neden kural olusturma gereksinimi duyariz? SQL Server da Rule nedir?

         SQL Serverda bir sütun içine girilen degerleri kontrol etmek istiyorsak o sütun için Rule yazmamiz gerekir. Örnegin bir tablonuzda TC Kimlik Numarasini da tuttugunuz bir sütun var ve bu sütun içerisine rakam disinda bir deger girilmesini istemiyorsunuz. Iste bu gibi durumlarda Rule olusturabilirsiniz. Ya da bir seyler sattiginizi düsünelim ve sattiginiz ürünlerin fiyatlari 1-100 lira arasinda degisiyor. Sizde yanlis veri girilmesine karsin hatayi en aza indirmek için,  tablonuzun satisfiyati sütununuzun sadece 1-100 arasinda degerler almasini istiyorsunuz. Bu gibi durumlarda da Rule yazabilirsiniz.

         Rule dedigimiz gibi tablo sütunlari için kullanilmasinin yani sira kullanici tanimli degiskenlere de uygulanabilir.

         NOT: Bir sütun için yalnizca bir tane Rule olusturabiliriniz.

         Birkaç örnekle konuyu pekistirelim.

Ilk örnegimiz sadece sayi girilmesini istedigimiz bir rule yazalim.

create rule SadeceSayi --1

as

@rakam like '_ _-%[0-9]' --2

 

Gördügünüz gibi kullanimi oldukça basit.

--1  Create rule deyip ardindan kural adini yaziyoruz.

--2   Daha sonra istedigimiz kurali yazip bunu bir degere aktariyoruz. Ben @rakam adli degerime aktardim. Sadece 0-9 arasi sayilarin girisini istedim. Bunun disinda _(alt çizgi), -(tire) ve bosluk gibi karakterleri de kontrol ettim.

Simdi gelelim yazdigimiz kurali binding yapmaya. Yani yazdigimiz kurali istedigimiz tablodaki istedigimiz sütun ile iliskilendirmeye.

Bunun için yapimiz asagidaki sekilde olacaktir;

Exec sp_bindrule kural_adi,’tabloadi.sütunadi’

exec sp_bindrule SadeceSayi,'makbuzlar.tckimlikno' --1

Islemleri basari ile yaptigimiz takdirde  Rule bound to table column.” Adli mesaji almis olacagiz

--1 SadeceSayi adli kuralimizi makbuzlar tablosundaki tckimlikno adli sütun ile iliskilendirdik.

Burada bulunan sp_bindrule olusturdugumuz kurali binding yapmak için kullandigimiz bir sistem prosedürüdür.

Simdi Kontrol Edelim…



 

Tckimlikno adli sütuna sayi disinda baska karakterlerde girdigimizde karsimiza bir uyari mesaji çikiyor. Uyari mesajina bakarsak hatanin bizim olusturdugumuz kural ile ilgili oldugunu görüyoruz

Olusturdugumuz Kurali Iptal Etmek…


 

 

Ilk akla gelen, resimdeki gibi Kurallarin tutuldugu alanda istedigimiz kurali silmek olacaktir. Bu yanlis degildir fakat eksiktir diyebiliriz. Çünkü yukaridaki silme islemini direk yapmak istedigimizde bize bu kuralin bir sütunla iliskili oldugunu söyleyecek ve kurali silmeyecektir. Bunun için sp_unbindrule sistem prosedürünu kullanarak kural ile sütun arasindaki iliskiyi kesmis olacagiz. Bu prosedürü örnegimiz için asagidaki gibi kullanmamiz gerekiyor.

exec sp_unbindrule 'makbuzlar.tckimlikno' –-‘tabloadi.sutunadi’

 

Artik yukarida bulunan resimdeki gibi silme islemi yapabiliriz.

 

Diger Örnek Rule Islemleri

1-   Bir sütunda sadece iki sayi arasindaki degerlere izin vermek.

CREATE RULE kural_adi

AS

@deger >= 1 and @deger < 1000

 Bu örnekte bind islemi yapacagimiz sütuna yalnizca 1 ila 1000 arasindaki degerleri girebiliriz.

 

2-  Bir sütunda sadece istenilen ifadelere yer vermek

CREATE RULE kural_adi

AS

@list IN ('Salih', 'Engin')

 Bu örnekte bind islemi yapacagimiz sütuna yalnizca Salih ve Engin ifadelerini girebiliriz.

 

Iyi Çalismalar….

 

 

                                                                          Yazan: Salih DEMIROG


 


Makale Tagları

Makale Dosyası

Makaleye Ait Dosya Bulunamamıştır

Paylaş


Yazar Hakkında
Genel Bilgiler   Yazar Hakkında
Ad: Salih Demiroğ 1986 doğumlu Salih Demiroğ Gazi Üniversitesi ,Bilgisayar Sistemleri Öğretmenligi alanında lisans egitimini sürdürmektedir.İlk olarak Sistem Mühendisliği alanında eğitim almış olup daha sonra kendisini Yazılım Mühendisliği alanında uzmanlaştırmıştır. Yazarımız .Net alanında bireysel ve kurumsal eğitimler vermiş olup birçok kişisel ve kamu projelerinde görev almıştır. Salih halen İnfopark Ankara'da Yazılım Uzmanı olarak çalışmaktadır.YazilimDevi.Com'un kurucularından olan Salih DEMİROĞ YazilimDevi.Com başta olmak üzere bir çok sitede makale ve video yayını yapmıştır.
Kurum: İnfopark Ankara
Meslek: Yazılım Uzmanı / Eğitmeni
E-Mail: salihdemirog@gmail.com
Web Sitesi: http://www.salihdemirog.com
Makale-Video: 63

Bu makale için yapılmış yorumlar

Bu makale hakkında yorum yapınız!...

Bu makale hakkında yorum yapabilmek için lütfen üye olunuz veya giriş yapınız.

Konular

Yazarlar

Son Eklenen Makaleler

Son Eklenen Videolar

Ziyaretçi İstatistiği

ImageOnline : 9         Bugün : 1373

Bu Ay : 8204        Bu Yıl : 58378

Toplam : 441217

Kullanıcı Giriş Paneli!
E-Mail:
Şifreniz:
Giriş Yap

Şifremi Unuttum!
E-Mail:
    Gönder