- Bir veya birden fazla tabloda bulunan verinin özel gösterim şeklidir. Saklanmış sorgular olarakta düşünülebilir.
- Kısıtlamalar konularak tablo güvenliği sağlanır.
Viewlar simple ve complex olmak üzere ikiye ayrılırlar. Complex viewlar genellikle join, group by, order by gibi ifadeler içerir.
VIEW OLUŞTURMA
create [or replace] [force|noforce] view view_name
[(alias [, alias]…)]
AS Subquery
[with check option [CONSTRAINT constraint]]
[with read only [CONSTRAINT constraint]];
ÖRNEK :
create or replace view isciler
as select * from employees
select * from isciler;
- Simple view üzerinde DML işlemleri yapılabilir.
- Complex view üzerinde genellikle DML işlemleri yapılamaz.
- WITH READ ONLY ifadesi view üzerinde DML yapılmasını engeller.
- WITH CHECK OPTION ifadesi DML in kontrollü yapılmasını sağlar.
ÖRNEK : Lex isimli işçinin maaşına %10 zamı view üzerinden yapalım
select salary, first_name from isciler where first_name =’Lex’
sorgu sonucu Lex in maaşı 17000 olduğunu gördük şimdi güncelleyelim
update isciler set salary=salary*1.10 where first_name =’Lex’
- Bir view üzerinde DML yapılmasını pasif etmek için view read only seçeneğiyle oluşturulur.
WITH READ ONLY KULLANIMI
ÖRNEK :
create or replace view bolum as
select * from departments
with read only
bu viewa bir dml işlemi yapılmaya çalışıldığında ORA-42399 hatası alınır
insert into bolum values(9,’Faruk’,250,2000)
WITH CHECK OPTION KULLANIMI : where condition kullanılarak bir view oluşturuldu ise bu view üzerinde yapılan DML işlemlerinde şarta uymayan dml lerin tabloya uygulanmasını engellemek için kullanılır.
create table benim_bolum as
select * from departments
hr altındaki departments tablosunun aynısını benim_bolum adında bir tabloya aktardım ve bu tabloyu kullanartak bolum adındaki view i oluşturuyorum
viewi başlangıçta WITH CHECK OPTION kullanmadan oluşturalım
create or replace view bolum
as select * from benim_bolum
where manager_id<200
şimdi view ve bu şarta uymayan (manager_id=250 olan) bir insert gönderelim
insert into bolum values(9,’Faruk’,250,2000)
view de bu satırı göstermez çünkü manager_id si 250 fakat asıl tablomuz olan benim_bolum tablosuna insert işleminin yapıldığını görüyoruz.
select * from benim_bolum order by 1
insert işlemini view e yapıyoruz fakat viewın şartını sağlamıyor bu insert işleminin asıl tabloyada olmamasını istiyoruz o halde WITH CHECK OPTION parametresini kullanmalıyız
create or replace view bolum
as select * from benim_bolum
where manager_id<200
with check option
bu şekilde oluşturduğumuz viewde view şarı sağlanmaz ise asıl tabloyada dml işlemi ugulanmayacaktır. ORA-01402 hatasını verecektir.
insert into bolum values(9,’Faruk’,250,2000)
Bir yanıt yazın