—————————-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);
Merhaba,Çalışmalarınızdan ötürü sizi kutluyorum. Değerli bilgilerinize dayanarak size bir soru sormak istiyorum. İki ayrı user altında bulunan iki farklı tablo alanı arasında foreign key oluşturmak istiyorum. Ancak sanırım farklı userler altında oldukları için “table or view does not exist” diye bir hata alıyorum. Bu konunun çözümü hakkında yardımcı olursanız çok sevinirim.
Merhaba,isminizi belirtirseniz hitaben daha makul olurdu,foreign key tanımlarken REFERENCES ile referans gösterdiğimiz tabloya erişim yetkiniz olmayabilir,tablespace ve/veya tablo bazında erişim yetkileri verirseniz problem olmaz diye düşünüyorum,Sorularınızı http://tech.groups.yahoo.com/group/oracleforum/ oracleforum grubuna yazarsanız daha fazla alternatif cevaplar bulabilirsiniz.
Orhan Bey teşekkür ederim. Kusara bakmayın adımı yazmayı unutmuşum. İsmim Baki. Usere gerekli yetkileri vererek çözmeye çalışıcam. Tekrar teşekkür ederim.
Merhaba Baki bey,grant all on user2.tablo2 to user1; şeklinde user’a ait tablonuntüm yetkilerini bir başka user’a verebilirsiniz…aşağıdaki örnektekigibi adımları takip ederek iki farklı tablespace üserinde iki farklıtablo arasında foreign key tanımlayabilirsiniz..CREATE USER user1 IDENTIFIED BY a DEFAULT TABLESPACE system TEMPORARYTABLESPACE temp;CREATE USER user2 IDENTIFIED BY b DEFAULT TABLESPACE users TEMPORARYTABLESPACE temp;grant dba to user1,user2;create table user2.tablo2 (nosu number(10) ,bol_ad varchar2(15),constraint const_pk_nosu primary key(nosu));create table user1.tablo1 (p_id number(10) ,ad varchar2(15),nosunumber(10),constraint const_pk_p_id primary key(p_id));grant all on user2.tablo2 to user1;grant all on user1.tablo1 to user2;commit;alter table user1.tablo1 add (constraint const_fk_nosu foreign key(nosu) references user2.tablo2(nosu))insert into user1.tablo1(p_id,ad,nosu) values(15,’orhan’,100);insert into user1.tablo1(p_id,ad,nosu) values(20,’ahmet’,200);insert into user1.tablo1(p_id,ad,nosu) values(25,’baki’,240);insert into user1.tablo1(p_id,ad,nosu) values(30,’ali’,300);insert into user1.tablo1(p_id,ad,nosu) values(40,’mehmet’,200);insert into user2.tablo2(nosu,bol_ad) values(200,’kbb’);insert into user2.tablo2(nosu,bol_ad) values(300,’göz’);insert into user2.tablo2(nosu,bol_ad) values(240,’üroloji’);insert into user2.tablo2(nosu,bol_ad) values(100,’ortopedi’);select * from user2.tablo2select * from user1.tablo1select t1.ad,t1.nosu,t2.bol_ad from user1.tablo1 t1 join user2.tablo2t2 on(t1.nosu=t2.nosu)