-- ----------------------------------------------------------------
create or replace function ei_denik_insert () returns opaque as '
    declare zaznam RECORD;
    begin
    select into zaznam * from ei_hlkniha where ucet=new.ucet and anal=new.anal;
    if not found then
        raise notice ''Dopl�uji do hlavn� knihy ��et %.%'',new.ucet,new.anal;
        insert into ei_hlkniha (ucet,anal) values (new.ucet, new.anal);
        end if;
    if new.mdd=''M'' then
        update ei_hlkniha set zustatek_md=zustatek_md+new.castka 
                           where ucet=new.ucet and anal=new.anal;
        end if;
    if new.mdd=''D'' then
        update ei_hlkniha set zustatek_dal=zustatek_dal+new.castka 
                           where ucet=new.ucet and anal=new.anal;
        end if;
    return new;
    end;
' language 'plpgsql';

-- ----------------------------------------------------------------
create trigger ei_denik_insert before insert
    on ei_denik for each row
    execute procedure ei_denik_insert();

-- ----------------------------------------------------------------
create or replace function ei_denik_update() returns opaque as '
    declare zaznam RECORD;
    begin
    select into zaznam * from ei_hlkniha where ucet=new.ucet and anal=new.anal;
    if not found then
        raise exception ''V hlavn� knize chyb� ��et %.%'',new.ucet,new.anal;
        end if;
    if new.mdd=''M'' then
        update ei_hlkniha set zustatek_md=zustatek_md+new.castka-old.castka 
                           where ucet=new.ucet and anal=new.anal;
        end if;
    if new.mdd=''D'' then
        update ei_hlkniha set zustatek_dal=zustatek_dal+new.castka-old.castka
                           where ucet=new.ucet and anal=new.anal;
        end if;
    return new;
    end;
' language 'plpgsql';

-- ----------------------------------------------------------------
create trigger ei_denik_update before update
    on ei_denik for each row
    execute procedure ei_denik_update();