VIEW

  • 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.

view

 

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;

view select

  • 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’

update view

  • 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)

ready only ORA

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

check option

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)

view option2