-- funkce pro kontrolu konsistence provedené účetní operace create or replace function ei_poradi_update() returns opaque as ' declare zaznam_p RECORD; declare zaznam_m RECORD; declare zaznam_d RECORD; begin select into zaznam_p * from ei_popis where cislo=old.cislo; if not found then raise exception ''Účetní operace % nemá zadaný popis.'',old.cislo; end if; select into zaznam_m sum(castka) as castka from ei_denik where mdd=''M'' and cislo=old.cislo; if zaznam_m.castka is null then raise exception ''Účetní operace % nemá stranu má dáti.'',old.cislo; end if; select into zaznam_d sum(castka) as castka from ei_denik where mdd=''D'' and cislo=old.cislo; if zaznam_d.castka is null then raise exception ''Účetní operace % nemá stranu dal.'',old.cislo; end if; if zaznam_m.castka != zaznam_d.castka then raise exception ''Účetní operace % nemá shodnou stranu má dáti a dal.'',old.cislo; end if; return new; end; ' language 'plpgsql'; create trigger ei_poradi_update before update on ei_poradi for each row execute procedure ei_poradi_update();