Oracle'da Tetikleyici Nasıl Devre Dışı Bırakılır?

Oracle Da Tetikleyici Nasil Devre Disi Birakilir



Veritabanı tetikleyicileri veya kısaca tetikleyiciler, belirli bir veritabanı nesnesindeki bir olay etkinliğine yanıt olarak yürütülen saklı yordamları ifade eder.

Bu, kullanıcıdan açık çağrı gerektiren standart saklı yordamlardan farklıdır. Tetikleyiciler otomatik olduğundan, bağlı kullanıcı veya sunucu durumundan bağımsız olarak belirtilen olay gerçekleştiğinde tetiklenir veya tetiklenir.







İlişkisel veritabanlarının çoğu, geçersiz işlemleri önleme, olay günlüğü tutma, tablo erişim istatistiklerini getirme ve kaydetme ve daha fazlası gibi otomatik görevleri gerçekleştirmek için tetikleyicilerin kullanılmasını destekler.



Bir tetikleyici oluşturulduktan sonra, ilgili olay gerçekleştiğinde her zaman çalışır. Ancak, bir tetikleyicinin çalışmasını geçici veya kalıcı olarak engellemek isteyebilirsiniz. Tetik devre dışı bırakma özelliğinin devreye girdiği yer burasıdır.



Bu gönderi, bir Oracle veritabanında bir tetikleyiciyi devre dışı bırakmak için hızlı ve kolay adımlar hakkında tartışacaktır. Oracle tetikleyicileri konusunda yeniyseniz ve nasıl oluşturulacağını öğrenmek istiyorsanız, aşağıdaki bağlantıyı kontrol edin:





https://linuxhint.com/oracle-create-trigger

Test Tetikleyici Oluşturma

Bir tetikleyiciyi devre dışı bırakma yöntemlerini tartışmadan önce, gösterim amacıyla örnek bir tetikleyici oluşturalım.



NOT : Bu bölüm, veritabanı tetikleyicilerinin nasıl tanımlanacağını veya kullanılacağını kapsamaz.

Bir silme işleminden sonra kullanıcı etkinliğini günlüğe kaydeden bir tetikleyici oluşturmak istiyoruz. Örneğin, gösterilen bilgileri içeren bir sample_data tablomuz olduğunu varsayalım:

Öncelikle her silme etkinliği için günlükleri sakladığımız bir tablo oluşturmamız gerekiyor.

Tablo şeması aşağıdaki gibidir:

tablo oluştur sample_data_logs(
kimlik Numarası,
ad varchar2(50),
ip_adresi varchar2(20),
btc_adresi varchar2(50),
kredi_kartı varchar2(50),
tanımlayıcı varchar2(40),
tarih_sil tarih,
varchar2(20) tarafından silindi
);

Ardından, bir silme olayından sonra yürütülen bir tetikleyici tanımlamamız gerekiyor. Tetikleyici tanımı şu şekilde sağlanır:

log_user tetikleyicisini oluştur veya değiştir
sildikten sonra
sample_data üzerinde
her sıra için
bildirmek
action_username varchar2(20);
başlamak
ikiliden action_username içine kullanıcı seçin;
sample_data_logs içine ekle
değerler (:OLD.id,
:OLD.ad_adı,
:OLD.ip_adresi,
:OLD.btc_adresi,
:OLD.credit_card,
:ESKİ.tanımlayıcı,
tarih,
action_username);
son;

Tetikleyiciyi test etmek için, örnek_veri tablosundan gösterildiği gibi bir silme işlemi gerçekleştirelim:

sample_data'dan sil burada id = 1;

Son olarak, silme işleminin kaydedildiğinden emin olmak için günlük tablosunu kontrol edebiliriz:

sample_data_logs'tan * seçin;

Çıktı:

Gördüğümüz gibi, tabloda silinmeden önce önceki verilerin yanı sıra silme etkinliğini gerçekleştiren kullanıcı adı ve silme zamanının bir girişi vardır.

Aşağıdaki bölümlerde, önceki tetikleyicinin nasıl devre dışı bırakılacağını göstereceğiz. Bunu yapmadan önce, hedef tetikleyicinizin çalışır durumda olduğundan ve onu etkinleştirmek veya devre dışı bırakmak için yeterli izniniz olduğundan emin olun.

PL/SQL Kullanarak Bir Tetikleyiciyi Devre Dışı Bırakma

Bir tetikleyiciyi devre dışı bırakmanın ilk ve en basit yöntemi bir SQL deyimi kullanmaktır. Neyse ki, Oracle bize sözdizimi aşağıdaki gibi sağlanan ALTER TRIGGER deyimini sağlar:

ALTER TRIGGER trigger_name DISABLE;

Örneğin, daha önce oluşturduğumuz log_user tetikleyicisini devre dışı bırakmak için aşağıdakileri çalıştırabiliriz:

tetikleyiciyi değiştir log_user devre dışı bırak;

Çalıştırıldıktan sonra tetikleyici, aşağıda gösterildiği gibi eski verilerin ve silme işlemini gerçekleştiren kullanıcının bir kopyasını artık tutmaz:

sample_data'dan sil burada id = 2;

Günlükleri kontrol edin:

sample_data_logs'tan * seçin;

Çıktı:

Gördüğümüz gibi, hala tek bir kaydımız var.

SQL Developer Kullanarak Bir Tetikleyiciyi Devre Dışı Bırakma

Grafik arayüzde bir tetikleyiciyi devre dışı bırakmak için SQL Developer yardımcı programını kullanabiliriz. SQL Developer'da oturum açarak başlayın.

'Tetikleyiciler' bölümüne gidin:

Tetikleyiciler dizinini genişletin ve devre dışı bırakmak istediğiniz tetikleyiciyi bulun. Tetikleyici adına sağ tıklayın ve “Devre Dışı Bırak” seçeneğini seçin.

“Devre Dışı Bırak” işlemini onaylayın ve “Uygula”ya tıklayın.

Devre dışı bırakıldığında, Oracle tetikleyiciyi devre dışı bırakarak devre dışı olduğunu gösterir.

Çözüm

Bu makalede, PL/SQL deyimleri ve SQL Developer yardımcı programı kullanılarak bir Oracle tetikleyicisinin nasıl devre dışı bırakılacağı incelenmiştir.