Citat:
zoranrajkov: imam dve tabele
1. tabela1 (c3_new)sa podacima koji se upisuju i koja izaziva trigger
2. tabela2 (c3_prekid)u koju se upisuju podaci ako se desi dogadjaj
Probaj da napraviš još jednu pomoćnu tabelu tabela12 (c3_trenutno) u kojoj će
biti čuvana samo zadnja vrijednost iz tabele c3_new (znači, samo jedan red i
neće biti inserta, već samo update).
Kako sam ja shvatio, vrše se neka periodična očitavanja i upisuju u tabelu c3_new
recimo svake sekunde. Napraviš triger za tu tabelu AFTER INSERT koji će
napraviti update u c3_trenutno stare vrijednosti SAKTIVNA na novu.
Sad, za tu tabelu c3_trenutno napraviš triger BEFORE UPDATE u kome ćeš vršiti
provjeru da li je došlo do prekida (uporediš staru i novu vrijednost...)
i na osnovu toga uradiš ili ne uradiš insert u c3_prekidi.
Sve ostale trigere privremeno onemogući ili obriši.
Druga stvar, pošto kažeš da uvijek dobijaš NULL kod trigera, probaj da napisanim
SQL upitom vršiš insert ili update, a ne direktno u gridu, ako koristiš neki grafički alat
(a vjerovatno koristiš). Zavisi i koji alat i koju verziju Firebirda koristiš (verziju 2.0
u potpunosti ne podržavaju svi alati, pa probaj i sa verzijom 1.5.3).
Drugi način je da ako informacije o prekidima treba da dobiješ samo kao izvještaj,
onda u SQL upitu ili SP za izvještaj možeš da izbaciš vrijednosti koje ti ne trebaju,
samo ostaviš prekide, pa ti samo praktično treba tabela c3_new i nikakvi trigeri i
druge tabele.