[ ultraKeen @ 30.06.2002. 05:50 ] @
Moze li se nekako,
recimo u TRIGGER BEFORE
(moze i AFTER, ne bi mi smetalo ali bi mi BEFORE bas godilo) - spreciti
bas sama akcija koja je izazvala okidanje trigera ?

Recimo pri dodavanju novog reda u TRIGGER BEFORE INSERT - saamo to
dodavanje novog reda (koje valda(?) tek treba da usledi)...
jer mi mogucnost dodavanja novog reda treba da zavisi
od statusnih stanja ostalih/drugih tabela recimo...

Znam da je mozda mesto za tako sta PRE pokusaja dodavanja reda
(u samom front end koodu),
ali ja bi to ipak da resim trigerima u bazi... nekako mi je sigurnije...
[ Riste Pejov @ 02.07.2002. 03:26 ] @
To se u bazi moze uraditi tako da prvo definiras exception ovako:
Code:

CREATE EXCEPTION za*** 'e sad si najebo, unes podataka ne valja';

i onda ako nesto ne valja u trigerr-a pozoves exception
primer:
Code:

create trigger manje_od_100 for neka_tabela active before insert
as
begin
if (new.kolona < 100 ) then
   exception za***;
end


ovaj kod proverava dali unet rekord u koloni zvana kolona sadrzi broj veci od 100, ukoliko uslov nije ispunjen onda javljas gresku, i rekord se ne insertuje.
[ ultraKeen @ 02.07.2002. 11:30 ] @
tacno tako!
(i meni je isto palo na pamet ali kasnije)

lansiranje korisnickog exception-a cak i u BEFORE trigeru obustavlja svaku dalju aktivnost svega sto se tice dogadjaja koji je okinuo trigger, a ne samo desavanja koja se ticu samog kooda u doticnom triggeru... sto je mene grizlo i jelo dok nisam isprobao na primeru...

...a original tekst helpa kako rade Exceptions je po meni malo zamumuljen:

"Terminates the procedure or trigger in which it was raised and undoes any actions performed (directly or indirectly) by the procedure or trigger."