[ Comii @ 28.07.2008. 08:50 ] @
Pokusavam da kreiram triger koji ce nakon unosa vrednosti u jednu tabelu upisati tu vrednost u drugu tabelu.
Evo tih tabela:
Tabela Fakture:
PIB varchar(20)NOT NULL,
JMBG_rad number(13) NOT NULL,
id_materijala number(6) NOT NULL,
datum date NOT NULL,
kolicina number(10) NOT NULL,
tip varchar2(10) NOT NULL,
Tabela Kolicine:
kolicina_materija number(10)NOT NULL,
Sada pokusavam kreirati triger koji ce nakon unosa vrednosti u Fakture ako je tip fakture prodaja,tip='prodaja',
upisati unetu vrednost za kolicinu u tabelu tabelu kolicine tj. kolicina u kolicina_materija.
Evo koda trigera:
CREATE OR REPLACE TRIGGER "FAKTURE_T1"
after
insert on "FAKTURE"
for each row
WHEN (new.tip='prodaja')
begin
insert into kolicine
(kolicina_materija)
values
(:new.kolicina)
end;
Sada kada pokusam da unesem vrednosti u Fakture javlja se greska
ORA-04098: trigger 'HR.FAKTURE_T1' is invalid and failed re-validation.
Ince sve ovo pokusavam uraditi u Oracle Database XE.

Hvala!
[ IDE @ 29.07.2008. 08:27 ] @
Evo, nisam isprobao - ali trebalo bi da radi...

CREATE OR REPLACE TRIGGER fakture_triger
AFTER INSERT
ON fakture REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
if upper(:new.tip)='PRODAJA' then
insert into kolicine
(kolicina_materija)
values
(:new.kolicina)
end if;
END;

[ Comii @ 30.07.2008. 15:45 ] @
RADI, samo bez REFERENCING NEW AS NEW OLD AS OLD.
Hvala!