triggers pl sql tutorial with example programs
PL SQL'deki Tetikleyiciler, türleri, kullanımı ve avantajları hakkında her şeyi öğrenin:
İçinde PL SQL İşlemleri öğreticisi PL / SQL serisi COMMIT, ROLLBACK ve SAVEPOINTS ifadelerini öğrendik.
Bu makalede, PL SQL'deki tetikleyicileri ve bunların avantajlarını, türlerini ve kullanımını inceleyeceğiz. PL / SQL Tetikleyicilerinin nasıl oluşturulacağını, tetikleneceğini, etkinleştirileceğini ve devre dışı bırakılacağını örnek programlar yardımıyla tartışacağız.
Tartışmaya başlayalım !!
Ne öğreneceksin:
PL / SQL'de Tetikleyiciler
Varsayılan olarak veya bazı olaylar tarafından çalıştırılan depolanmış bir programa tetikleyici denir.
Aşağıda listelenen aşağıdaki durumlar nedeniyle bir tetikleyici yürütülür:
- DROP, ALTER veya CREATE gibi bir DDL (Veri Tanımlama Dili) ifadesiyle.
- UPDATE, INSERT veya DELETE gibi bir DML (Veri İşleme Dili) ifadesiyle.
- KAPATMA, BAŞLATMA, LOGOFF ve LOGON gibi bir veritabanı eylemiyle.
Bir olay eklenmiş bir şema, görünüm veya veritabanında bir tetikleyici ayarlanabilir.
Tetikleyicilerin Avantajları
Bunlar aşağıda listelenmiştir:
- Bilgi tutarlılığını uygulama yeteneği.
- İzleme yeteneği.
- Tablolara erişim verilerini kaydetme ve tutma yeteneği.
- Geçerli olmayan işlemleri durdurma yeteneği.
- Güvenlik özelliklerini uygulama yeteneği.
- Varsayılan olarak türetilmiş sütun değerleri üretme yeteneği.
Tetikleyicilerin Kullanımları
Bunlar aşağıda listelenmiştir:
- Uygunsuz işlemleri önler.
- Tablo kullanımı hakkında bilgi toplar.
- Kritik bilgileri izleyin.
PL / SQL'de Tetikleyici Türleri
Tetikleyiciler, parametrelere göre kategorize edilebilir. Tetikleyici türleri aşağıda listelenmiştir:
# 1) Tetikleme seviyesinde kategorizasyon.
- SATIR Seviye tetikleyicisi: Bir DML ifadesiyle güncellenen her kayıt için yürütülür.
- STATEMENT Seviye tetikleyicisi: Olay ifadesi tarafından yalnızca bir kez yürütülür.
# 2) Tetikleme zamanlamasına göre kategorizasyon.
- Tetiklemeden ÖNCE: Meydana gelen belirli olaydan önce yürütülür.
- Tetiklemeden SONRA: Meydana gelen belirli bir olay sonrası yürütülür.
- Tetikleyicinin YERİNE: Özel bir tetikleyici türüdür ve bir DML ifadesiyle güncellenen her kayıt için yürütülür.
# 3) Tetikleyici olayın sınıflandırılması.
- DML tetikleyicisi: UPDATE, INSERT veya DELETE gibi bir DML olayı gerçekleştirilirse yürütülür.
- DDL tetikleyicisi: DROP, ALTER veya CREATE gibi bir DDL olayı gerçekleştirilirse yürütülür.
- VERİTABANI tetikleyicisi: KAPATMA, BAŞLATMA, LOGOFF ve LOGON gibi bir veritabanı olayı gerçekleşmişse yürütülür.
Tetikleyiciler Oluşturun
Tetikleyici oluşturmak için sözdizimi:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Buraya,
- OLUŞTUR (VEYA DEĞİŞTİR) TRIGGER trigger_n - Bu, tetikleyici_n olarak bir ada sahip bir tetikleyici oluşturmak, değiştirmek veya güncellemek içindir.
- SONRA - Bu, tetiğin ne zaman ateşleneceğini belirlemek içindir. INSTEAD OF, görünümü olan bir tetikleyici oluşturmak içindir.
- SİL - Bu, DML eylemlerini yürütmek içindir.
- (OF sütun_n) - Bu, değiştirilecek sütun adından bahsetmek içindir.
- (Tablo_n üzerinde) - Bu, tetikleyiciye eklenen tablo adından bahsetmek içindir.
- (ESKİ OLARAK YENİ OLARAK n) - Bu, UPDATE, INSERT veya DELETE gibi DML ifadesi ile eski ve yeni değerlere atıfta bulunmak içindir.
- (HER SIRA İÇİN) - Bu, satır düzeyinde bir tetikleyiciyi belirler, yani tetik, değiştirilen her satır için tetiklenir, aksi takdirde tetik, tablo düzeyinde tetik olarak bilinen SQL ifadesi yürütüldüğünde yalnızca bir kez tetiklenir.
- NE ZAMAN (koşul) - Bu, tetikleyicinin yürütüleceği satırlar için bir koşul verir. Bu, yalnızca satır düzeyinde tetikleyiciler için geçerlidir.
Tekrar adlandırılmış bir tablo düşünelim ÖĞRENCİ .
Şimdi ÖĞRENCİ tablosu için bu tablodaki UPDATE, INSERT veya DELETE gibi DML ifadesi tarafından yürütülecek olan satır düzeyinde bir tetikleyici oluşturalım. Tetikleyici, mevcut ve önceki değerler arasındaki yaş farkını hesaplayacak ve gösterecektir.
Tetikleyici oluşturma için Kod Uygulaması:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Yukarıdaki kodun çıktısı:
Yukarıdaki kodun bazı önemli özellikleri vardır. Aşağıda listelenmiştir:
- Tablo düzeyinde bir tetikleyici için ESKİ ve YENİ adresler kullanılamaz. Bu referansları kayıt seviyesindeki tetikleyiciler için kullanabiliriz.
- Aynı tetikleyiciye başka bir sorgu uygulamak istiyorsak, o zaman bir tabloyu ancak önceki değişiklikler düzgün bir şekilde uygulandıktan sonra yeniden değiştirebilen bir tetikleyici olarak SONRA anahtar kelimesini kullanmamız gerekir.
- Yukarıda tartışılan tetik, tablodaki herhangi bir DELETE, UPDATE veya INSERT eyleminden önce yürütülmektedir. Bununla birlikte, tek bir işlemde de ateşlenen bir tetikleyici tasarlayabiliriz ( Örneğin, Tablodaki INSERT işlemi yardımıyla bir kayıt eklendiğinde tetikleyiciyi çalıştıracak olan SONRA INSERT).
PL SQL'de Tetikleyicileri Tetikleme
Yukarıdaki tetikleyiciyi tetiklemek için tablodaki DELETE, INSERT veya UPDATE gibi herhangi bir DML işlemini yapmamız gerekir. Aşağıdaki sorgu yardımıyla yine Öğrenci tablosuna bazı değerler ekleyelim:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Öğrenci tablosunda INSERT işlemi tamamlandığında, tetik age_changes idam edilir.
Sorgu kodunun çıktısı:
Yeni bir rekor oluşturulduğundan ve önceki yaş mevcut olmadığından, önceki yaş ve Yaş farkı hesaplama yukarıdaki çıktıda boş olarak gelir.
Şimdi bize UPDATE ifadesiyle bir kaydı aşağıdaki sorgu yardımıyla değiştirin:
UPDATE student SET age = age + 1 WHERE code = 7;
Öğrenci tablosunda GÜNCELLEME işlemi tamamlandığında, tetikleyici age_changes idam edilir.
Yukarıdaki sorgunun çıktısı:
YENİ ve ESKİ Fıkra
Tetikleyicinin yürütülmesi için tablonun sütunlarının yeni değerini saklamak için yeni bir yan tümce kullanılır. Kayıt seviyesi tetikleyicilerde kullanılır. Tetikleyici yürütme için tablonun sütunlarının eski değerini saklamak için eski bir yan tümce kullanılır. Ayrıca rekor seviyedeki tetikleyicilerde kullanılır.
Bu nedenle, yeni ve eski cümle, bir tetik gövdesi içindeki yeni ve eski değerleri tutmak ve bunlara atıfta bulunmak için kullanılır.
Bileşik Tetikleyici
Tetikleyici gövdesi içindeki tüm zamanlama noktalarının işlemlerini tanımlamak için bir bileşik tetik kullanılır. Tüm eylemleri tek bir tetikleme gövdesi içinde farklı zamanlamalarda birleştirme hükmünü verir.
Çeşitli zamanlama noktaları aşağıda listelenmiştir:
- STATEMENT düzeyinden SONRA
- SATIR seviyesinden ÖNCE
- SATIR seviyesinden SONRA
- STATEMENT seviyesinden ÖNCE
Tetikleyiciyi Devre Dışı Bırak ve Etkinleştir
Bir DDL ifadesi ALTER yardımıyla bir tetikleyiciyi etkinleştirebilir ve devre dışı bırakabiliriz.
Sözdizimi:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Burada trigger_n, etkinleştirmek veya devre dışı bırakmak istediğimiz tetikleyicinin adıdır.
Şimdi aşağıdaki sorgu yardımıyla tetikleyiciyi devre dışı bırakalım:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Sorgu kodunun çıktısı:
Şimdi aynı tetikleyiciyi aşağıdaki sorgu yardımıyla etkinleştirelim:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Sorgu kodunun çıktısı:
Sıkça Sorulan Sorular ve Cevaplar
S # 1) PL SQL'de kaç tür tetikleyici vardır?
Cevap: PL / SQL'de iki tür tetikleyici vardır. Satır düzeyinde tetikleyici ve İfade düzeyinde tetikleyicidir.
S # 2) Hangi tür tetikleyici eski ve yeni niteleyicileri kullanır?
qa ve qc arasındaki fark nedir
Cevap: Eski ve yeni niteleyiciler yalnızca satır düzeyi tetikleyicilerle kullanılabilir. İfade seviyesindeki tetikleyicilerle uyumlu değildirler.
S # 3) Yeni tetikleyici ile eski tetikleyici arasındaki fark nedir?
Cevap: Yeni bir tetikleyici, kayıt nesnelerinin yeni sürümlerinin bir listesini verir. Eski bir tetikleyici, kayıt nesnelerinin eski sürümlerinin bir listesini verir.
S # 4) PL SQL'de satır düzeyinde tetikleyici nedir?
Cevap: Bir olay nedeniyle bir satır için yalnızca bir kez satır düzeyinde tetikleyici tetiklenir. Örneğin, silme bir tablo için tetikleyici bir olay olarak kabul edilirse, bir silme ifadesi iki satırı etkiliyorsa, tetik iki kez tetiklenmelidir.
S # 5) Tetikleyici nedir? Bir örnekle açıklayın.
Cevap: Tetikleyici, veritabanında bir olay meydana gelirse varsayılan olarak çalıştırılan bir saklı yordamdır. Örneğin, tabloya bir satır eklenirse veya tablodaki bazı değerleri değiştiriyorsak.
S # 6) Sonraki tetikleyiciler nelerdir?
Cevap: After tetikleyicileri, bir DML ifadesinin yürütülmesinden sonra, ancak veritabanına kaydetmeden önce tetiklenir. Ayrıca eylemini geri alma yeteneğine de sahiptir.
Sonuç
Bu eğitimde, programlama sırasında bunları kullanmak için gerekli olan PL SQL'de Tetikleyicilerin bazı temel kavramlarını tartıştık. Aşağıda listelenen aşağıdaki konuları ele aldık:
- Tetikleyiciler.
- Tetikleyici Türleri.
- Tetikleyiciler üzerinde çeşitli işlemler.
<< PREV Tutorial | SONRAKİ Eğitici >>