With encription view nesnelerini şifrelemek
Örnek: Seafood kategorisine ait ürünleri listeleyen view oluşturun.
create view Kategoriler with encryption as select ProductName as [Urun Adı],UnitsInStock as [Stok Sayısı], UnitPrice as [indirimli Fiyat] from Products where CategoryID=8
Burada views klasörünün altında Kategoriler adında bir view oluşturuldu. Diğerlerinden farklı olarak bu view şifrelendi. Aşağıdaki şekilde görüldüğü üzere design kısmına erişim yasaklandı.
Ayrıca öyle bir view oluşturdum ki veritabanında bulunan isimleri de doğrudan bir başka kullanıcı göremiyor. As kelimesiyle takma isimler(Urun Adı, Stok Sayısı gibi) kullanıldı.
Eğer bir defa encryption ettiyseniz onu bir defa dencryption edemezsiniz. Geri döndüremezsiniz. Eğer bunu kullanırsanız bu kodlarınızı bir yere yazınız. Yoksa erişim nasıl oluşturduğunuzu unutabilirsiniz.
Burada dikkat edilmesi gereken nokta encryption kelimesi create den sonra as den önce kullanılır ve çok dikkat edilmesi gerekir.
View üzerinden insert işlemi
Eğer tek tablodan view oluşturmuşsak insert update ve delete işlemleri yapılabilir.
insert into Kategoriler([Urun Adı],[Stok Sayısı],[indirimli Fiyat]) values ('Balık',50,32)
Ne ilginçtir ki burada where koşulu kullanılamaz. Aşağıdaki şekilde Products tablosuna eklenmiş fakat CategoryID where koşuna 8 girmeme rağmen NULL diye eklenmiştir.
Eğer bağlantılı bir tablodan en az iki tablodan oluşan bir view ise insert update delete işlemlerine izin vermez.
View’larda Order By Kullanımı
Order by kullanılıyorsa viewlar içerisinde TOP kullanılmak zorundasınız. Bu sorgunuzu eğer encyrption yaptıysanız sorgunuzu dinamik haline getirmelisiniz. Top kullanırken sayı girmek yerine sorgu ile listenin count’unu döndürmek daha akıllıca olacaktır. Yeni bir ürün girildiği zaman view’lar böylece sorun çıkarmayacaktır. Aşağıdaki sorgu ile öncelikle view oluşturuldu sonra da select sorgusu ile veriler çekildi.
create view UrunFiyatListele with encryption as select top(select count(*) from Products) ProductName,UnitPrice From Products order by UnitPrice asc go select * from UrunFiyatListele
Not: Alter komutuyla daha önceden tabloları değiştirebileceğimizi öğrenmiştik. Aynı durum için encryption kullanılsa bile view’ları değiştirebilirsiniz.
0 yorum