VERİTABANI PROGRAMLAMA Dersi Kısıtlayıcı ve Tetikleyiciler soru detayı:

PAYLAŞ:

SORU:

Yıllık üyelik aidatı olan bir organizasyon olduğunu düşünelim. Yıllık üyelik aidatını yatıran kişiler organizasyonda yapılan tüm haklara sahip olsun. Bir kişi düzenlenen bir organizasyona katılmak istediğinde kişinin bilgileri girildikten sonra (tablo veya tablolara INSERT işlemi gerçekleşmesi) yıllık ücretinin yatırılıp yatırılmadığının kontrol edilmesi gerekmektedir. Bu kontrol kısıtlayıcılarla mı yapılır yoksa tetikleyicilerle mi? Neden? Açıklayınız.


CEVAP:

Kontrol etme eylemi INSERT tetikleyicisi ile gerçekleştirilebilir. Eğer yıllık ücret yatırılmadı ise ROLLBACK yapılarak ekleme eylemi geri alınabilir. Böyle bir durumu kısıtlayıcılarla yapmak mümkün değildir. Çünkü kısıtlayıcıların, sadece ekleme eyleminin gerçekleştiği tabloya veya satıra erişim hakkı vardır. Kısıtlayıcılar başka tablo veya satırlara erişemezler. Ama tetikleyicilerin diğer tablo ve satırlara erişim hakkı vardır. Böyle durumlarda tetikleyiciler kısıtlayıcılara karşı üstündür. Tabloya INSERT işleminden sonra yapılacak olan eylemler tetikleyiciler tarafından otomatik olarak yapıldığından ekstradan kod yazılması gerekmemektedir. Ekleme eyleminin birden fazla tabloya yazılması gerekiyorsa ve kişi üyelik aidatını yatırmadığı durumlarda tablodaki kayıtların tutarlı olması için ekleme eyleminin gerçekleşen tüm tablolardan silinmesi gerekmektedir.