with schemabinding,with encryption ve with check option ifadesi

With schemabinding view’in bağlı bulunduğu tablodaki kolonları kilitleyip o kolonların silinmesini engeller.

“Schemabinding” parametresini kullanırken dikkat edilmesi gereken iki önemli kuralı vardır:

  1. Birinci kural: Nesnemi oluştururken kullandığım kolonları  “Asterisk” (*) işareti ile belirtemem. Hangi kolonları koruma altına almak istiyorsam, kolonların adlarını yazarak belirtmeliyim.Gerekirse tüm kolonları koruma altına alacaksam hepsini “from” deyiminden önce yazmalıyım.
  2. İkinci kural: Nesnemi “schemabinding” ile oluştururken kullandığım tabloları “dbo” (database owner) anahtar sözcüğüyle kullanmam gerekiyor. “dbo” deyimine, “nesnenin ikinci kısmı” da denir. Veritabanı sahibi olduğumu belirtmeliyim. “Scalar Functions” nesneleri de ikinci kısımlarıyla çağrılması gerekiyordu.
  CREATE VIEW V_TEST
  WITH SCHEMABINDING
  AS
    SELECT [Id], [Ad], [Soyad] FROM dbo.Test

Bu durumda view’ın bağlı bulunduğu Test tablosundaki Id,Ad,Soyad kolonları silinemez, veri tipi ve kolon adı değiştirilemez hale gelir.

with encryption ifadesi ile viewleri,spleri,functionları şifreleyip sorguların görünür olmasını engeller

  CREATE VIEW V_TEST2
  WITH SCHEMABINDING, ENCRYPTION
  AS
    SELECT [Ad], [Soyad] FROM dbo.Test

Bu işlemden sonra artık yaratılan view içeriği görüntülenemez ve modify edilemez.

with check option
Kimi zaman view nesnelerini tanımlarken nesne gövdesinde WHERE elementi ile kısıtlamaya gidiyor olabilirsiniz. Peşi sıra; bu view nesnesini kullanarak tablolarınıza kayıt işlemi de gerçekleştirebilirsiniz. Şayet bu view nesnesi üzerinden sadece kısıta bağlı kayıt işlemi gerçekleştirecek isek böyle durumda WITH CHECK OPTION nesnesini kullanıyor olmamız gerekir.
Önemli Not1: WITH CHECK OPTION kullanılan nesnede bir transaction çalışır. Şayet ilgili view’de insert edilen satır view’de tanımlanan where koşuluna uyuyor ise insert işlemi başarılı şekilde çalışır aksi durum için yapılan insert işleminde transaction devreye girerek önce “insert” işlemi gerçekleşir sonrasında ise o satır “delete” edilir.
Önemli Not2: WITH CHECK OPTION kullanılan nesne kendisini bağlar, ilgili tabloyu bağlamaz. Yani tabloya bağımsız şekilde istediğiniz gibi kayıt etmeye devam edebilirsiniz.

CREATE VIEW vw_Adi
AS
SELECT * FROM tablo_adi WHERE kosul
WITH CHECK OPTION