Bir Oracle kullanıcısı kendi schemasındaki objeleri her zaman silme hakkına sahiptir. Örneğin şemasındaki bir TABLE’ı, DROP TABLE yetkisi olmasa bile silebilir. Özellikle tek schema üzerinde geliştirilmiş uygulamalar ile çalışırken, yaratılmış olan objlerin silinebilmesini engellemek gerekebilir. Böyle bir durumda yapılması gereken bir Database Trigger’ı yaratmaktır.
HR kullanıcısının kendi schemasındaki tabloları silmesini engellemek istediğimizi varsayalım. Bunu engellemek için şöyle bir trigger yazabiliriz:
CREATE OR REPLACE TRIGGER trigger_drop_engeli BEFORE DROP ON DATABASE
BEGIN
IF ora_dict_obj_type = ‘TABLE’ THEN
IF ora_dict_obj_owner = ‘HR’ AND ora_login_user = ‘HR’ THEN
raise_application_error (-20000, ’TABLOYU DROP EDEMEZSINIZ’);
END IF;
END IF;
END;
HR kullanıcısı kendi schemasında bir tablo silmeye kalktığında ORA-20000 hatası (ve beraberinde Oracle’ın verdiği bir iki internal hata) alacak ve işlemi tamamlayamayacaktır. Örnekte de görüldüğü üzere database trigger’ında kullanabileceğimiz bazı pseudo değişkenler var. Konuyla ilgili olanlar şunlar:
ORA_DICT_OBJ_NAME: Üzerinde işlem yapılan objenin ismi.
ORA_DICT_OBJ_OWNER: Üzerinde işlem yapılan objenin sahibi (schema adı).
ORA_LOGIN_USER: İşlemi yapmak isteyen kullanıcı.
ORA_DICT_OBJ_TYPE: İşlem yapılacak objenin tipi (TABLE, INDEX vs).
ORA_SYSEVENT: Yapılmak istenilen işlem (eğer yazılan trigger birden fazla işlemde çalışacak ise). Örneğimizde bu hep ‘DROP’ olacaktır
Çarşamba, 27 Ekim 2010 13:02
Kullanıcının Kendi Schemasındaki Objeleri Silmesini Engellemek
Yazan&Gönderen Yusuf Arslan
Konu 78 kere Okundu
Kategori Oracle
Beğendiyseniz Paylaşın
- Google Buzz ekleyin
- Delicious
- Digg this
- StumbleUpon
- MySpace
- Technorati

Yusuf Arslan
Oracle Open Source
1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57bWebsite: arslanyusuf.blogspot.com/ E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir
En Son Yusuf Arslan
Yorum yaz
Make sure you enter the (*) required information where indicated.
Basic HTML code is allowed.