Bu tetikleyici, hastane.islemyap tablosuna her bir satır eklendiğinde (BEFORE INSERT) çalışacak şekilde oluşturulmuştur. Tetikleyici, her bir satır üzerinde çalışacak şekilde ayarlanmıştır (FOR EACH ROW). HASTANE.islemyap_hakedis_yok adında oluşturulan bu tetikleyici, islemyap tablosunda yapılan her bir ekleme işlemi öncesinde çalışacaktır.
Tetikleyici, :new.dr ve :new.kodu değişkenlerini kullanarak ilgili satırın değerlerini kontrol eder. Eğer :new.dr değeri 134’e ve :new.kodu değeri 107520 veya 107520’ye eşitse, :new.islem_hakedis_yok alanını ‘T’ olarak ayarlar.
Bu tetikleyici sayesinde, doktor (dr) alanı 134’e ve kodu (kodu) alanı 107520 veya 107520’ye eşit olan işlemler, islem_hakedis_yok alanı ‘T’ olarak ayarlanarak hakedişe yansımayacaktır. Diğer durumlarda ise islem_hakedis_yok alanı otomatik olarak null değerini alır.
/* Formatted on 13/06/2023 10:23:48 (QP5 v5.388) */
--Kullanılması Gereken AlanlarDROP TRIGGER HASTANE.islemyap_hakedis_yok;
--ALTER TABLE hastane.islemyap ADD islem_hakedis_yok VARCHAR2 (1 BYTE);
--ALTER TABLE hastane.islemyaptetkik ADD islem_hakedis_yok VARCHAR2 (1 BYTE);
--Doktorda kullanılan key değeri hakedis_islem_yok='T'
CREATE OR REPLACE TRIGGER HASTANE.islemyap_hakedis_yok
BEFORE INSERT
ON hastane.islemyap
FOR EACH ROW
ENABLE
DECLARE
BEGIN
--1 dr ilgili doktorun dradi tablosunda ki dr_kodu
--Örnek ali şahan dr_kodu=1;
--Kodu hanesi ilgili doktor ile eşleşen hizmetin islemtipi tablosunda ki kodu alanı
--bu yapı eşleşen dr ve kodun fatura türü fark etmeksizin hakedise yansımasını engeller
IF (:new.dr = 134) AND (:new.kodu IN (107520, 107520))
THEN
:new.islem_hakedis_yok := 'T';
END IF;
END;
/