26 April 2006

How to make a table readonly In Oracle


Oracle için bir tabloyu sadece okunabilir(readonly) yapmak için constraint kullanılabilinir.Bunun için constraint disable validate olarak oluşturulmalıdır.Örnek ile daha iyi anlaşılacaktır:


Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
Connected as dev
 SQL> create table const_sample( x number );

Table created

SQL>
SQL> begin
  2  INSERT INTO const_sample(x) VALUES(1);
  3  INSERT INTO const_sample(x) VALUES(2);
  4  INSERT INTO const_sample(x) VALUES(3);
  5  INSERT INTO const_sample(x) VALUES(4);
  6  INSERT INTO const_sample(x) VALUES(5);
  7  end;
  8  /

PL/SQL procedure successfully completed

SQL> commit;

Commit complete

SQL> alter table const_sample add constraint cons_number check( x > 0 ) disable validate;

Table altered

SQL>  INSERT INTO const_sample(x) VALUES(50);

INSERT INTO const_sample(x) VALUES(50)

ORA-25128: No insert/update/delete on table with constraint (DEV.CONS_NUMBER) disabled and validated


Görüldüğü üzere tablo üzerinde DML işlemi yapmaya izin verilmemektedir.


Bundan başka bir yöntem olarak da o tablo üzerinde INSERT, UPDATE ve DELETE işlemlerininden önce tetiklenecek bir trigger yazmaktır. Trigger içinde exception oluşturursak, kullanıcıların bu tablo üzerinde işlem yapmalarını engelleyebiliriz.