SQL Server Check Constraint Ekleme

19 Mart 2017 Pazar

Herhangi bir veri tablosundaki her bir sütun içindeki saklanan veri belirli bir veri tipindedir ve hatta maksimum boyutuda belirlenmiştir. İlgili sütuna NULL veri girilebilir mi, girilemez mi, bu bile tablonun oluşturulması esnasında belirtilmektedir. Örneğin INT veri tipi tanımlanmış bir sütuna biz herhangi bir string değer girememeliyiz. Ama biz eğer tablolarımı oluştururken herhangi bir kısıtlama tanımlamadı isek, kullanıcının bu istenmeyen durumları gerçekleştirebilmesinin önüne geçemeyiz. Sonuç itibari ile sayı istenen bir alana kullanıcı herhangi bir kelime girebilir ve eğer biz kısıtlayıcı yani constraint tanımlamaz isek kullanıcının girmiş olduğu bu veriyi kabul ederiz.

İşte bu gibi durumların önüne geçebilmek için tablolarıma Check Constraint yani kontrol kısıtlayıcıları ekleyebiliyoruz. Bu check constraintler ile bir çok şeyi yapabiliriz. Örneğin sadece INT veri girilmesini sağlayabiliriz ya da sadece belirli bir aralıkta değer girilmesini sağlayabiliriz. Diyelim ki bir yaş bilgisi istiyorsunuz o alana tabii ki 0 ile mantıksal olarak düşünürsek 100 arası değer isteriz. Tabi maşallah daha fazla yaşayanlar da olabilir . Yani bir kolonun NULL değer olabilme ihtimali ya da NULL olmama ihtimali de aslında bir nevi constraint yani kısıtlamadır.

MS-SQL’de kod yazarken bir tablo oluşturulması esnasında nasıl kısıtlayıcı ekleyebiliriz görelim. Syntax aşağıdaki gibidir.

CREATE TABLE ( , ,
CONSTRAINT CHECK (<şart>))</CONSTRAINT></VERI></VERI>

Oluşturulmuş bir tabloya sonradan constraint eklemek istediğimizi varsayarsak synatx şu şekilde olur:

CREATE TABLE ( , )
ALTER TABLE ADD CONSTRAINT CHECK (<şart>)</CONSTRAINT></VERI></VERI>

Örnek olarak aşağıdaki gibi bir tablo oluşturuyorum.

Daha sonra tablomda değişiklik yapıyorum ve yeni bir constraint ekliyorum. Kolon1 değerleri 1 ve 12 dahil olmak üzere bunların arasında olsun istiyorum.

Şimdi tablomuza veri ekleyelim.

Burada ilk veri eklenir, çünkü herhangi bir constrainte yakalanmıyor. Ancak ikincisi eklenmeyecektir. Çünkü biz kolon1 için 1 ve 12 (1 ve 12 dahil) arasında olacağı şartını eklemiştik. Kodda ise kolon1’e 13 eklenmek isteniyor.


Share/Bookmark

0 comments :