—————————-TRIGER ÖRNEK-1 ———————-

alter table hastalar add cinsiyet char(1) default ‘E’;

insert into hastalar(hasta_id,hasta_no,hasta_adi,klinik_id) values(20,225,’can’,2);

CREATE OR REPLACE TRIGGER TRG_CINSIYET
BEFORE INSERT
ON HASTALAR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
:NEW.CINSIYET := ‘K’;
END;
/

insert into hastalar(hasta_id,hasta_no,hasta_adi,klinik_id) values(30,250,’ayşe’,1);

————————–TRIGER ÖRNEK-2———————-
(DİĞER TABLOLARA DA AYNI DEĞİŞİKLİK)

create table hastalar2 as select * from hastalar;

CREATE OR REPLACE TRIGGER TRG_TABLOLARA_UYGULA
AFTER
UPDATE OF HASTA_ADI
ON HASTALAR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
begin
UPDATE HASTALAR2 SET HASTA_ADI=:NEW.HASTA_ADI WHERE HASTA_ID=:NEW.HASTA_ID;
end TRG_TABLOLARA_UYGULA;
/

update hastalar set hasta_adi=’canan’ where hasta_adi=’can’;

—————–TRIGER ORNEK-3(LOG TABLOSU İÇİN)—————

CREATE TABLE HASTALAR_LOG AS SELECT * FROM HASTALAR;

CREATE OR REPLACE TRIGGER TRG_HASTALAR_LOG
AFTER
INSERT OR UPDATE
ON HASTALAR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare

begin

if inserting then

INSERT INTO HASTALAR_LOG
(HASTA_ID,HASTA_NO,HASTA_ADI,KLINIK_ID,CINSIYET)
VALUES
(:NEW.HASTA_ID,:NEW.HASTA_NO,:NEW.HASTA_ADI,:NEW.KLINIK_ID,:NEW.CINSIYET);

elsif updating then

INSERT INTO HASTALAR_LOG
(HASTA_ID,HASTA_NO,HASTA_ADI,KLINIK_ID,CINSIYET)
VALUES
(:NEW.HASTA_ID,:NEW.HASTA_NO,:NEW.HASTA_ADI,:NEW.KLINIK_ID,:NEW.CINSIYET);
end if;

end TRG_HASTALAR_LOG;
/

insert into hastalar(hasta_id,hasta_no,hasta_adi,klinik_id) values(50,450,’mustafa’,1);
select * from hastalar_log;

—————————-TRIGER ORNEK-4————————-
(HASTA_NO KARAKTER UZUNLUĞU)

CREATE OR REPLACE TRIGGER TRG_HASTA_NO
AFTER
INSERT OR UPDATE OF HASTA_NO
ON HASTALAR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare

begin

IF (:NEW.HASTA_NO IS NOT NULL) AND (LENGTH(:NEW.HASTA_NO) < 3)
THEN
raise_application_error(-20070,’HASTA NUMARASI 3 KARAKTERDEN AZ OLAMAZ!!!İŞLEM İPTAL!’);
END IF;

end ;
/

insert into hastalar(hasta_id,hasta_no,hasta_adi,klinik_id) values(70,50,’mehmet’,1);

——————TRIGER ORNEK-5 (KARŞILAŞTIRMA)—————

CREATE OR REPLACE TRIGGER TRG_SORGULAMA
BEFORE
INSERT
ON HASTALAR
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
declare
VHASTA_NO NUMBER;

begin
begin
SELECT HASTA_NO INTO VHASTA_NO
FROM HASTALAR WHERE HASTA_ADI=:NEW.HASTA_ADI AND HASTA_NO :NEW.HASTA_NO;

IF VHASTA_NO > 0 THEN
raise_application_error(-20090,VHASTA_NO||’ NOLU HASTA DA AYNI İSİM VAR.İŞLEM İPTAL!!!’);
END IF;

exception when no_data_found then
null;
end;
end;
/

insert into hastalar(hasta_id,hasta_no,hasta_adi,klinik_id) values(70,50,’ahmet’,1);